Condividi tramite


Funzione SeSetSecurityDescriptorInfoEx (ntifs.h)

La routine SeSetSecurityDescriptorInfoEx modifica il descrittore di sicurezza di un oggetto e specifica se l'oggetto supporta l'ereditarietà automatica delle voci del controllo di accesso (ACE).

Sintassi

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
);

Parametri

[in, optional] Object

Puntatore all'oggetto il cui descrittore di sicurezza deve essere modificato. Questa operazione viene usata per aggiornare le informazioni sulla quota di sicurezza.

[in] SecurityInformation

Puntatore a un valore che specifica quali informazioni di sicurezza devono essere impostate. Può essere una combinazione di uno o più dei seguenti.

Valore Significato
DACL_SECURITY_INFORMATION Indica che viene impostato l'elenco di controllo di accesso discrezionale dell'oggetto. Richiede WRITE_DAC accesso.
GROUP_SECURITY_INFORMATION Indica che l'identificatore del gruppo primario dell'oggetto viene impostato. Richiede l'accesso WRITE_OWNER.
OWNER_SECURITY_INFORMATION Indica che l'identificatore del proprietario dell'oggetto viene impostato. Richiede l'accesso WRITE_OWNER.
SACL_SECURITY_INFORMATION Indica che l'ACL di sistema (SACL) dell'oggetto viene impostato. Richiede ACCESS_SYSTEM_SECURITY accesso.

ModificationDescriptor

Descrittore di sicurezza di input da applicare all'oggetto. Il chiamante di questa routine deve eseguire il probe e acquisire il descrittore di sicurezza passato prima di chiamare e rilasciarlo dopo la chiamata.

[in, out] ObjectsSecurityDescriptor

Puntatore a un puntatore al descrittore di sicurezza dell'oggetto. Il descrittore di sicurezza deve essere in formato auto-relativo. Questa struttura deve essere deallocata dal chiamante.

[in] AutoInheritFlags

Maschera bit che controlla l'ereditarietà automatica degli ACL. Impostare sull'OR logico di uno o più flag di bit seguenti:

Flag delle informazioni di sicurezza Significato
SEF_DACL_AUTO_INHERIT Se questo flag è impostato, l'elenco dati viene considerato come daCL eredita automaticamente e viene elaborato come descritto nella sezione Osservazioni seguenti. Questo bit viene ignorato se DACL_SECURITY_INFORMATION non è impostato nel parametro SecurityInformation .
SEF_SACL_AUTO_INHERIT Se questo flag è impostato, SACL viene considerato come un'eredita automatica SACL e viene elaborato come descritto nella sezione Osservazioni seguenti. Questo bit viene ignorato se SACL_SECURITY_INFORMATION non è impostato nel parametro SecurityInformation .

[in] PoolType

Specifica il tipo di pool da usare durante l'allocazione di un nuovo descrittore di sicurezza, che può essere uno dei seguenti:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

In genere, un chiamante specifica PagedPool oppure NonPagedPool se il buffer verrà accessibile a IRQL >= DISPATCH_LEVEL o in un contesto di thread arbitrario.

I tipi di pool NonPagedPoolMustSucceed e NonPagedPoolCacheAlignedMustS sono obsoleti e non devono più essere usati.

[in] GenericMapping

Puntatore a una struttura GENERIC_MAPPING che specifica il mapping di tipi di accesso generici a tipi di accesso specifici e standard per l'oggetto a cui si accede. Questa struttura di mapping deve essere sicura per l'accesso(ovvero, acquisito se necessario) prima di passare a questa routine.

Valore restituito

Codice restituito Descrizione
STATUS_SUCCESS Il descrittore di sicurezza dell'oggetto è stato modificato correttamente.
STATUS_BAD_DESCRIPTOR_FORMAT Il descrittore di sicurezza dell'oggetto specificato non era in formato auto-relativo.
STATUS_NO_SECURITY_ON_OBJECT L'oggetto non ha un descrittore di sicurezza.

Commenti

Se il parametro AutoInheritFlags è zero, l'effetto della chiamata a SeSetSecurityDescriptorInfoEx è uguale a quello della chiamata a SeSetSecurityDescriptorInfo.

Se AutoInheritFlags specifica il bit SEF_DACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx applica le regole seguenti all'elenco di controllo dati per creare il nuovo descrittore di sicurezza dal descrittore corrente:

  • Se il flag di SE_DACL_PROTECTED non è impostato nei bit di controllo del descrittore di sicurezza corrente o nel descrittore di sicurezza corrente, SeSetSecurityDescriptorInfoEx costruisce il descrittore di sicurezza di output dagli ACL ereditati del descrittore di sicurezza corrente e degli ACL non inheriti di SecurityDescriptor. È quindi impossibile modificare un ACE ereditato modificando l'ACL in un oggetto. Questo comportamento mantiene gli ACL ereditati come ereditati dal contenitore padre.

  • Se SE_DACL_PROTECTED è impostato nel securityDescriptor di input, il descrittore di sicurezza corrente viene ignorato. Il descrittore di sicurezza di output viene compilato come copia del securityDescriptor di input con eventuali bit INHERITED_ACE disattivati.

Idealmente un editor ACL deve disattivare i bit di INHERITED_ACE che indicano al chiamante che gli ACL ereditati dall'oggetto padre dell'oggetto sono ora impostati in modo esplicito sull'oggetto.

  • Se SE_DACL_PROTECTED è impostato nel descrittore di sicurezza corrente e non nel descrittore securityDescriptor, il descrittore di sicurezza corrente viene ignorato. Il descrittore di sicurezza di output viene compilato come copia del securityDescriptor. È responsabilità del chiamante assicurarsi che gli ACL corretti abbiano il bit INHERITED_ACE attivato.

Se AutoInheritFlags specifica il bit SEF_SACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx applica regole simili al nuovo SACL.

Per altre informazioni sul controllo di accesso e sull'ereditarietà ACE, vedere la sezione Sicurezza della documentazione di Microsoft Windows SDK.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000
Piattaforma di destinazione Universale
Intestazione ntifs.h (include Ntifs.h)
Libreria NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Vedi anche

ACE

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo