SeAssignSecurityEx, fonction (wdm.h)
La routine SeAssignSecurityEx génère un descripteur de sécurité auto-relatif pour un nouvel objet en fonction des paramètres facultatifs suivants : un descripteur de sécurité du répertoire parent de l’objet, un descripteur de sécurité explicite pour l’objet et le type d’objet.
Syntaxe
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
);
Paramètres
[in, optional] ParentDescriptor
Pointeur vers le SECURITY_DESCRIPTOR de l’objet parent qui contient le nouvel objet en cours de création. ParentDescriptor peut avoir la valeurNULL, ou avoir une liste de contrôle d’accès système (SACL) NULL ou une liste de contrôle d’accès discrétionnaire NULL (DACL).
[in, optional] ExplicitDescriptor
Pointeur vers un SECURITY_DESCRIPTOR explicite appliqué au nouvel objet. ExplicitDescriptor peut avoir la valeur NULL, ou avoir une LISTE SACL NULL ou une liste DACL NULL .
[out] NewDescriptor
Reçoit un pointeur vers le SECURITY_DESCRIPTOR retourné. SeAssignSecurityEx alloue la mémoire tampon du pool de mémoire paginée.
[in, optional] ObjectType
Pointeur vers un GUID pour le type d’objet en cours de création. Si l’objet n’a pas de GUID, ObjectType doit être défini sur NULL.
[in] IsDirectoryObject
Spécifie si le nouvel objet est un objet directory. Si IsDirectoryObject a la valeur TRUE, le nouvel objet est un objet directory ; sinon, le nouvel objet n’est pas un objet de répertoire.
[in] AutoInheritFlags
Spécifie le type d’héritage automatique appliqué aux entrées de contrôle d’accès (ACE) dans les listes de contrôle d’accès (ACL) spécifiées par ParentDescriptor. AutoInheritFlags contrôle également la vérification des privilèges, la vérification du propriétaire et la définition d’un propriétaire et d’un groupe par défaut pour NewDescriptor. AutoInheritFlags doit être défini sur un OU logique d’une ou plusieurs des valeurs suivantes :
Valeur | Signification |
---|---|
SEF_DACL_AUTO_INHERIT | Les ACL de ParentDescriptor sont hérités par NewDescriptor, en plus des ACÉ explicites spécifiés par ExplicitDescriptor. |
SEF_SACL_AUTO_INHERIT | Les ACL de ParentDescriptor sont hérités par NewDescriptor, en plus des ACÉ explicites spécifiés par ExplicitDescriptor. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor est le descripteur par défaut pour le type d’objet spécifié par ObjectType. ExplicitDescriptor n’est pas utilisé si les ACÉ sont hérités de ParentDescriptor. |
SEF_AVOID_PRIVILEGE_CHECK | La vérification des privilèges n’est pas effectuée. Cet indicateur est utile avec l’héritage automatique, car il évite la vérification des privilèges sur chaque enfant qui doit être mis à jour. |
SEF_AVOID_OWNER_CHECK | La vérification du propriétaire n’est pas terminée. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Si un propriétaire est spécifié par ExplicitDescriptor, cet indicateur n’est pas utilisé et le propriétaire de NewDescriptor est défini sur le propriétaire spécifié par ExplictDescriptor.
Si un propriétaire n’est pas spécifié par ExplicitDescriptor, cet indicateur est utilisé de la manière suivante : Si l’indicateur est défini, le propriétaire de NewDescriptor est défini sur le propriétaire de ParentDescriptor. Sinon, le propriétaire de NewDescriptor est défini sur le propriétaire spécifié par subjectContext. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Si un groupe est spécifié par ExplicitDescriptor, cet indicateur n’est pas utilisé et le groupe de NewDescriptor est défini sur le groupe spécifié par ExplictDescriptor.
Si un groupe n’est pas spécifié par ExplicitDescriptor, cet indicateur est utilisé de la manière suivante : Si l’indicateur est défini, le groupe de NewDescriptor est défini sur le groupe de ParentDescriptor. Sinon, le groupe de NewDescriptor est défini sur le groupe spécifié par subjectContext. |
L’affectation des listes de contrôle d’accès système et discrétionnaires est décrite dans le tableau suivant :
Descripteur explicite non défini par défaut(1) | Descripteur explicite par défaut(2) | NULL Descripteur explicite | |
---|---|---|---|
ACL est hérité du descripteur parent(3). | Affecter des listes de contrôle d’accès héritées et explicites(5)(6). | Attribuer une liste de contrôle d’accès héritée. | Attribuer une liste de contrôle d’accès héritée. |
ACL n’est pas hérité du descripteur parent(4). | Affecter une liste de contrôle d’accès non définie par défaut. | Affectez la liste de contrôle d’accès par défaut. | N’affecter aucune liste de contrôle d’accès. |
Remarques sur l'affectation
- L’indicateur SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT n’est pas spécifié.
- L’indicateur SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT est spécifié.
- L’indicateur d’héritage automatique d’une liste de contrôle d’accès est spécifié (SEF_DACL_AUTO_INHERIT ou SEF_SACL_AUTO_INHERIT).
- L’indicateur d’héritage automatique d’une liste de contrôle d’accès n’est pas spécifié.
- Les ACÉ dont le bit INHERITED_ACE est défini dans leur membre AceFlags ne sont pas copiés dans le descripteur de sécurité affecté.
- Les ACL hérités du descripteur parent sont ajoutés après les ACL spécifiés par le descripteur explicite.
[in] SubjectContext
Pointeur vers un contexte de sécurité du sujet qui crée l’objet. SubjectContext permet de récupérer les informations de sécurité par défaut du nouvel objet, notamment le propriétaire par défaut, le groupe principal et le contrôle d’accès discrétionnaire.
[in] GenericMapping
Pointeur vers un tableau de valeurs de masque d’accès qui spécifient le mappage entre chaque droit générique et des droits spécifiques à l’objet.
[in] PoolType
Ce paramètre est inutilisé. La mémoire tampon pour contenir le nouveau descripteur de sécurité est toujours allouée à partir du pool paginé.
Valeur retournée
SeAssignSecurityEx retourne l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
L’affectation a réussi. |
|
Le SID fourni en tant que propriétaire du nouveau descripteur de sécurité n’est pas un SID que l’appelant est autorisé à attribuer en tant que propriétaire d’un objet. |
|
L’appelant ne dispose pas du privilège (SeSecurityPrivilege) nécessaire pour affecter explicitement la SACL spécifiée. |
Remarques
SeAssignSecurityEx étend l’opération de base de SeAssignSecurity des manières suivantes :
- ObjectType spécifie éventuellement un type d’objet. L’héritage spécifique à l’objet est contrôlé par les membres suivants d’un ACE spécifique à l’objet : Flags, InheritedObjectType et Header.AceFlags.
- AutoInheritFlags spécifie le type d’héritage automatique des ACÉ qui est utilisé. AutoInheritFlags contrôle également la vérification des privilèges, la vérification du propriétaire et la définition d’un propriétaire et d’un groupe par défaut pour NewDescriptor.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
En-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport) |