Funzione SeAssignSecurityEx (wdm.h)
La routine SeAssignSecurityEx compila un descrittore di sicurezza auto-relativo per un nuovo oggetto in base ai parametri facoltativi seguenti: un descrittore di sicurezza della directory padre dell'oggetto, un descrittore di sicurezza esplicito per l'oggetto e il tipo di oggetto.
Sintassi
NTSTATUS SeAssignSecurityEx(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] ULONG AutoInheritFlags,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
Parametri
[in, optional] ParentDescriptor
Puntatore al SECURITY_DESCRIPTOR dell'oggetto padre che contiene il nuovo oggetto creato. ParentDescriptor può essere NULL o avere un elenco di controllo di accesso di sistema NULL (SACL) o un elenco di controllo di accesso discrezionale NULL (DACL).
[in, optional] ExplicitDescriptor
Puntatore a un SECURITY_DESCRIPTOR esplicito applicato al nuovo oggetto. ExplicitDescriptor può essere NULL o avere un VALORE SACL NULL o UN DACL NULL .
[out] NewDescriptor
Riceve un puntatore al SECURITY_DESCRIPTOR restituito. SeAssignSecurityEx alloca il buffer dal pool di memoria di paging.
[in, optional] ObjectType
Puntatore a un GUID per il tipo di oggetto creato. Se l'oggetto non dispone di un GUID, ObjectType deve essere impostato su NULL.
[in] IsDirectoryObject
Specifica se il nuovo oggetto è un oggetto directory. Se IsDirectoryObject è impostato su TRUE, il nuovo oggetto è un oggetto directory; in caso contrario, il nuovo oggetto non è un oggetto directory.
[in] AutoInheritFlags
Specifica il tipo di ereditarietà automatica applicata alle voci di controllo di accesso (ACE) negli elenchi di controllo di accesso (ACL) specificati da ParentDescriptor. AutoInheritFlags controlla anche il controllo dei privilegi, il controllo del proprietario e l'impostazione di un proprietario e un gruppo predefiniti per NewDescriptor. AutoInheritFlags deve essere impostato su un OR logico di uno o più dei valori seguenti:
Valore | Significato |
---|---|
SEF_DACL_AUTO_INHERIT | Gli ACL nell'elenco DACL di ParentDescriptor vengono ereditati da NewDescriptor, oltre agli ACL espliciti specificati da ExplicitDescriptor. |
SEF_SACL_AUTO_INHERIT | Gli ACL nel SACL di ParentDescriptor vengono ereditati da NewDescriptor, oltre agli ACL espliciti specificati da ExplicitDescriptor. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor è il descrittore predefinito per il tipo di oggetto specificato da ObjectType. ExplicitDescriptor non viene usato se gli ACL vengono ereditati da ParentDescriptor. |
SEF_AVOID_PRIVILEGE_CHECK | Il controllo dei privilegi non viene eseguito. Questo flag è utile con l'ereditarietà automatica perché evita il controllo dei privilegi per ogni elemento figlio che deve essere aggiornato. |
SEF_AVOID_OWNER_CHECK | Il controllo del proprietario non viene eseguito. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Se un proprietario viene specificato da ExplicitDescriptor, questo flag non viene usato e il proprietario di NewDescriptor viene impostato sul proprietario specificato da ExplictDescriptor.
Se un proprietario non viene specificato da ExplicitDescriptor, questo flag viene usato nel modo seguente: se il flag è impostato, il proprietario di NewDescriptor viene impostato sul proprietario di ParentDescriptor. In caso contrario, il proprietario di NewDescriptor è impostato sul proprietario specificato da SubjectContext. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Se un gruppo viene specificato da ExplicitDescriptor, questo flag non viene usato e il gruppo di NewDescriptor viene impostato sul gruppo specificato da ExplictDescriptor.
Se un gruppo non viene specificato da ExplicitDescriptor, questo flag viene usato nel modo seguente: se il flag è impostato, il gruppo di NewDescriptor viene impostato sul gruppo di ParentDescriptor. In caso contrario, il gruppo di NewDescriptor viene impostato sul gruppo specificato da SubjectContext. |
L'assegnazione di ACL di sistema e discrezionale è descritta nella tabella seguente:
Descrittore esplicito non predefinito(1) | Descrittore esplicito predefinito(2) | NULL Descrittore esplicito | |
---|---|---|---|
L'ACL viene ereditato dal descrittore padre(3). | Assegnare elenchi di controllo di accesso ereditati ed espliciti(5)(6). | Assegnare un elenco di controllo di accesso ereditato. | Assegnare un elenco di controllo di accesso ereditato. |
L'ACL non viene ereditato dal descrittore padre(4). | Assegnare un elenco di controllo di accesso non predefinito. | Assegnare l'elenco di controllo di accesso predefinito. | Assegnare nessun elenco di controllo di accesso. |
Note sulle assegnazioni
- Il flag SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT non è specificato.
- Viene specificato il flag SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT.
- Viene specificato il flag di ereditarietà automatica per un elenco di controllo di accesso (SEF_DACL_AUTO_INHERIT o SEF_SACL_AUTO_INHERIT).
- Il flag di ereditarietà automatica per un elenco di controllo di accesso non è specificato.
- Gli ACL con il bit INHERITED_ACE impostato nel membro AceFlagsnon vengono copiati nel descrittore di sicurezza assegnato.
- Gli ACL ereditati dal descrittore padre vengono aggiunti dopo gli ACL specificati dal descrittore esplicito.
[in] SubjectContext
Puntatore a un contesto di sicurezza dell'oggetto che crea l'oggetto. SubjectContext viene usato per recuperare le informazioni di sicurezza predefinite per il nuovo oggetto, inclusi il proprietario predefinito, il gruppo primario e il controllo di accesso discrezionale.
[in] GenericMapping
Puntatore a una matrice di valori della maschera di accesso che specificano il mapping tra i diritti generici per i diritti specifici dell'oggetto.
[in] PoolType
Questo parametro è inutilizzato. Il buffer per contenere il nuovo descrittore di sicurezza viene sempre allocato dal pool di paging.
Valore restituito
SeAssignSecurityEx restituisce uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
L'assegnazione ha avuto esito positivo. |
|
Il SID fornito come proprietario del nuovo descrittore di sicurezza non è un SID che il chiamante è autorizzato a assegnare come proprietario di un oggetto. |
|
Il chiamante non dispone del privilegio (SeSecurityPrivilege) necessario per assegnare in modo esplicito l'oggetto SACL specificato. |
Commenti
SeAssignSecurityEx estende l'operazione di base di SeAssignSecurity nei modi seguenti:
- ObjectType specifica facoltativamente un tipo di oggetto. L'ereditarietà specifica dell'oggetto è controllata dai membri seguenti di un ace specifico dell'oggetto: Flags, InheritedObjectType e Header.AceFlags.
- AutoInheritFlags specifica il tipo di ereditarietà automatica degli ACL utilizzati. AutoInheritFlags controlla anche il controllo dei privilegi, il controllo del proprietario e l'impostazione di un proprietario e un gruppo predefiniti per NewDescriptor.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | HwStorPortProhibitedDDIs(storport) |