Fonction SeAssignSecurity (wdm.h)
La routine SeAssignSecurity génère un descripteur de sécurité auto-relatif pour un nouvel objet, compte tenu du descripteur de sécurité de son répertoire parent et de toute sécurité demandée à l’origine pour l’objet.
Syntaxe
NTSTATUS SeAssignSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in] BOOLEAN IsDirectoryObject,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
Paramètres
[in, optional] ParentDescriptor
Pointeur vers une mémoire tampon contenant les SECURITY_DESCRIPTOR pour le répertoire parent, le cas échéant, contenant le nouvel objet en cours de création. ParentDescriptor peut avoir la valeur NULL ou avoir une liste de contrôle d’accès système NULL (SACL) ou une liste de contrôle d’accès discrétionnaire NULL (DACL).
[in, optional] ExplicitDescriptor
Pointeur vers une mémoire tampon contenant le SECURITY_DESCRIPTOR spécifié par l’utilisateur 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é. SeAssignSecurity alloue la mémoire tampon à partir du pool de mémoire paginée.
[in] IsDirectoryObject
Spécifie si le nouvel objet est un objet de répertoire. TRUE indique que l’objet contient d’autres objets.
[in] SubjectContext
Pointeur vers une mémoire tampon contenant le contexte de sécurité du sujet qui crée l’objet. Il permet de récupérer des informations de sécurité par défaut pour le nouvel objet, telles que le propriétaire par défaut, le groupe principal et le contrôle d’accès discrétionnaire.
[in] GenericMapping
Pointeur vers la structure GENERIC_MAPPING qui décrit le mappage de chaque droit générique aux droits non génériques implicites.
[in] PoolType
Ce paramètre est inutilisé. La mémoire tampon pour contenir le nouveau descripteur de sécurité est toujours allouée à partir d’un pool paginé.
Valeur retournée
SeAssignSecurity peut retourner l’un des éléments suivants :
Code de retour | Description |
---|---|
|
L’affectation a réussi. |
|
Le SID fourni pour le propriétaire du descripteur de sécurité cible n’est pas celui 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 attribuer explicitement la liste de contrôle d’accès système spécifiée. |
Remarques
Le descripteur de sécurité final retourné à l’appelant peut contenir une combinaison d’informations, dont certaines fournies explicitement à partir du parent du nouvel objet.
SeAssignSecurity suppose que la vérification des privilèges n’a pas été effectuée. Cette routine effectue la vérification des privilèges.
L’attribution de listes de contrôle d’accès système et discrétionnaires est régie par la logique illustrée dans le tableau suivant :
ACL explicite (non par défaut) spécifiée | Liste de contrôle d’accès par défaut explicite spécifiée | Aucune liste de contrôle d’accès spécifiée | |
---|---|---|---|
Liste de contrôle d’accès héritée du parent | Affecter une liste de contrôle d’accès spécifiée | Affecter une liste de contrôle d’accès héritée | Affecter une liste de contrôle d’accès héritée |
Aucune liste de contrôle d’accès héritée du parent | Affecter une liste de contrôle d’accès spécifiée | Attribuer une liste de contrôle d’accès par défaut | Affecter aucune liste de contrôle d’accès |
Une liste de contrôle d’accès spécifiée explicitement, qu’il s’agisse d’une liste de contrôle d’accès par défaut ou non, peut être vide ou null. L’appelant doit être un client en mode noyau ou avoir les privilèges appropriés pour attribuer explicitement une liste de contrôle d’accès système par défaut ou non par défaut.
L’affectation du propriétaire et du groupe du nouvel objet est régie par la logique suivante :
- Si le descripteur de sécurité passé inclut un propriétaire, il est affecté en tant que propriétaire du nouvel objet. Sinon, le jeton de l’appelant est considéré pour déterminer le propriétaire. Dans le jeton, le propriétaire par défaut, le cas échéant, est affecté. Sinon, l’ID utilisateur de l’appelant est attribué.
- Si le descripteur de sécurité passé inclut un groupe, il est affecté en tant que groupe du nouvel objet. Sinon, le jeton de l’appelant est considéré pour déterminer le groupe. Dans le jeton, le groupe par défaut, le cas échéant, est affecté. Sinon, l’ID de groupe principal de l’appelant est affecté.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 2000 et versions ultérieures de Windows. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Règles de conformité DDI | HwStorPortProhibitedDDIs(storport),PowerIrpDDis(wdm) |