SeSetSecurityDescriptorInfoEx, fonction (ntifs.h)
La routine SeSetSecurityDescriptorInfoEx modifie le descripteur de sécurité d’un objet et spécifie si l’objet prend en charge l’héritage automatique des entrées de contrôle d’accès (ACE).
Syntaxe
NTSTATUS SeSetSecurityDescriptorInfoEx(
[in, optional] PVOID Object,
[in] PSECURITY_INFORMATION SecurityInformation,
PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] ULONG AutoInheritFlags,
[in] POOL_TYPE PoolType,
[in] PGENERIC_MAPPING GenericMapping
);
Paramètres
[in, optional] Object
Pointeur vers l’objet dont le descripteur de sécurité doit être modifié. Ceci est utilisé pour mettre à jour les informations de quota de sécurité.
[in] SecurityInformation
Pointeur vers une valeur spécifiant les informations de sécurité à définir. Il peut s’agir d’une combinaison d’un ou plusieurs des éléments suivants.
Valeur | Signification |
---|---|
DACL_SECURITY_INFORMATION | Indique que la liste de contrôle d’accès discrétionnaire (DACL) de l’objet est en cours de définition. Nécessite un accès WRITE_DAC. |
GROUP_SECURITY_INFORMATION | Indique que l’identificateur de groupe principal de l’objet est défini. Nécessite un accès WRITE_OWNER. |
OWNER_SECURITY_INFORMATION | Indique que l’identificateur du propriétaire de l’objet est défini. Nécessite un accès WRITE_OWNER. |
SACL_SECURITY_INFORMATION | Indique que l’ACL système (SACL) de l’objet est en cours de définition. Nécessite un accès ACCESS_SYSTEM_SECURITY. |
ModificationDescriptor
Descripteur de sécurité d’entrée à appliquer à l’objet . L’appelant de cette routine est censé sonder et capturer le descripteur de sécurité passé avant l’appel, et le libérer après l’appel.
[in, out] ObjectsSecurityDescriptor
Pointeur vers un pointeur vers le descripteur de sécurité de l’objet. Le descripteur de sécurité doit être au format auto-relatif. Cette structure doit être désallouée par l’appelant.
[in] AutoInheritFlags
Masque de bits qui contrôle l’héritage automatique des ACL. Définissez sur le OU logique d’un ou plusieurs des indicateurs de bits suivants :
Indicateurs d’informations de sécurité | Signification |
---|---|
SEF_DACL_AUTO_INHERIT | Si cet indicateur est défini, le DACL est traité comme un DACL hérité automatiquement et est traité comme décrit dans la section Remarques suivante. Ce bit est ignoré si DACL_SECURITY_INFORMATION n’est pas défini dans le paramètre SecurityInformation . |
SEF_SACL_AUTO_INHERIT | Si cet indicateur est défini, la SACL est traitée comme une SACL héritée automatiquement et est traitée comme décrit dans la section Remarques suivante. Ce bit est ignoré si SACL_SECURITY_INFORMATION n’est pas défini dans le paramètre SecurityInformation . |
[in] PoolType
Spécifie le type de pool à utiliser lors de l’allocation d’un nouveau descripteur de sécurité, qui peut être l’un des suivants :
- NonPagedPool
- PagedPool
- NonPagedPoolCacheAligned
- PagedPoolCacheAligned
En règle générale, un appelant spécifie PagedPool ou NonPagedPool si la mémoire tampon sera accessible à l’adresse IRQL >= DISPATCH_LEVEL ou dans un contexte de thread arbitraire.
Les types de pool NonPagedPoolMustSucceed et NonPagedPoolCacheAlignedMustS sont obsolètes et ne doivent plus être utilisés.
[in] GenericMapping
Pointeur vers une structure de GENERIC_MAPPING qui spécifie le mappage des types d’accès génériques aux types d’accès spécifiques et standard pour l’objet accessible. Cette structure de mappage est censée être accessible en toute sécurité (c’est-à-dire capturée si nécessaire) avant d’être passée à cette routine.
Valeur retournée
Code de retour | Description |
---|---|
STATUS_SUCCESS | Le descripteur de sécurité de l’objet a été modifié avec succès. |
STATUS_BAD_DESCRIPTOR_FORMAT | Le descripteur de sécurité de l’objet fourni n’était pas au format auto-relatif. |
STATUS_NO_SECURITY_ON_OBJECT | L’objet n’a pas de descripteur de sécurité. |
Remarques
Si le paramètre AutoInheritFlags est égal à zéro, l’effet de l’appel de SeSetSecurityDescriptorInfoEx est identique à celui de l’appel de SeSetSecurityDescriptorInfo.
Si AutoInheritFlags spécifie le bit SEF_DACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx applique les règles suivantes au DACL pour créer le nouveau descripteur de sécurité à partir du descripteur actuel :
Si l’indicateur SE_DACL_PROTECTED n’est pas défini dans les bits de contrôle du descripteur de sécurité actuel ou de l’élément SecurityDescriptor d’entrée, SeSetSecurityDescriptorInfoEx construit le descripteur de sécurité de sortie à partir des ACÉ héritées du descripteur de sécurité actuel et des AIC nonhériées de SecurityDescriptor. Autrement dit, il est impossible de modifier un ACE hérité en modifiant l’ACL sur un objet . Ce comportement conserve les ACL hérités, car ils ont été hérités du conteneur parent.
Si SE_DACL_PROTECTED est défini dans l’entrée SecurityDescriptor, le descripteur de sécurité actuel est ignoré. Le descripteur de sécurité de sortie est généré en tant que copie du SecurityDescriptor d’entrée avec tous les bits INHERITED_ACE désactivés.
Dans l’idéal, un éditeur de liste de contrôle d’accès doit désactiver les bits INHERITED_ACE indiquant à son appelant que les ACL héritées du parent de l’objet sont désormais définies explicitement sur l’objet.
- Si SE_DACL_PROTECTED est défini dans le descripteur de sécurité actuel et non dans SecurityDescriptor, le descripteur de sécurité actuel est ignoré. Le descripteur de sécurité de sortie est généré en tant que copie de SecurityDescriptor. Il incombe à l’appelant de s’assurer que les AE appropriés ont le bit INHERITED_ACE activé.
Si AutoInheritFlags spécifie le bit SEF_SACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx applique des règles similaires à la nouvelle SACL.
Pour plus d’informations sur le contrôle d’accès et l’héritage ACE, consultez la section Sécurité de la documentation Microsoft Windows SDK.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 |
Plateforme cible | Universal |
En-tête | ntifs.h (include Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |