Partager via


SeSetSecurityDescriptorInfoEx, fonction (ntifs.h)

Le SeSetSecurityDescriptorInfoEx routine 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é. Il 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. Peut être une combinaison d’une ou plusieurs des opérations suivantes.

Valeur Signification
DACL_SECURITY_INFORMATION Indique que la liste de contrôle d’accès discrétionnaire (DACL) de l’objet est définie. 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 de propriétaire de l’objet est défini. Nécessite un accès WRITE_OWNER.
SACL_SECURITY_INFORMATION Indique que la liste de contrôle d’accès système (SACL) de l’objet est définie. 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 libérée par l’appelant.

[in] AutoInheritFlags

Masque de bits qui contrôle l’héritage automatique des ACL. Définissez la valeur OR logique d’un ou plusieurs indicateurs de bits suivants :

Indicateurs d’informations de sécurité Signification
SEF_DACL_AUTO_INHERIT Si cet indicateur est défini, la liste dacl est traitée comme une liste DACL héritée automatiquement et est traitée 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 liste de contrôle d’accès partagé est traitée comme une liste de contrôle d’accès partagé 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 éléments suivants :

  • NonPagedPool
  • pagedPool
  • nonPagedPoolCacheAligned
  • PagedPoolCacheAligned

En règle générale, un appelant spécifie PagedPool ou nonPagedPool si la mémoire tampon est accessible au >IRQL = DISPATCH_LEVEL ou dans un contexte de thread arbitraire.

Les types de pool NonPagedPoolMustSucceed et NonPagedPoolCacheAlignedMustS pool sont obsolètes et ne doivent plus être utilisés.

[in] GenericMapping

Pointeur vers une structure GENERIC_MAPPING qui spécifie le mappage de types d’accès génériques à des types d’accès spécifiques et standard pour l’objet accessible. Cette structure de mappage est censée être sécurisée pour accéder (autrement dit, capturée si nécessaire) avant d’être passée à cette routine.

Valeur de retour

Retourner le code 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 à la liste daCL pour créer le descripteur de sécurité à partir du descripteur actuel :

  • Si l’indicateur de SE_DACL_PROTECTED n’est pas défini dans les bits de contrôle du descripteur de sécurité actuel ou de l’entrée SecurityDescriptor, SeSetSecurityDescriptorInfoEx construit le descripteur de sécurité de sortie à partir des AE héritées du descripteur de sécurité actuel et des ACEs noninherited de SecurityDescriptor. Autrement dit, il est impossible de modifier un ACE hérité en modifiant la liste de contrôle d’accès sur un objet. Ce comportement conserve les AE héritées, car elles ont été héritées du conteneur parent.

  • Si SE_DACL_PROTECTED est défini dans le SecurityDescriptord’entrée, le descripteur de sécurité actuel est ignoré. Le descripteur de sécurité de sortie est généré en tant que copie de l’entrée SecurityDescriptor avec les INHERITED_ACE bits 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 le 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. Il incombe à l’appelant de s’assurer que les AE appropriées ont le bit INHERITED_ACE activé.

Si AutoInheritFlags spécifie le bit SEF_SACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx applique des règles similaires à la nouvelle liste de contrôle d’accès partagé.

Pour plus d’informations sur le contrôle d’accès et l’héritage ACE, consultez la section Sécurité de la documentation du Kit de développement logiciel (SDK) Microsoft Windows.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Voir aussi

ACE

de liste de contrôle d’accès

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo