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 |