Partager via


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

Voir aussi

ACE

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo