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 |