Función SeAssignSecurity (wdm.h)
La rutina SeAssignSecurity crea un descriptor de seguridad auto relativo para un nuevo objeto, dado el descriptor de seguridad de su directorio primario y cualquier seguridad solicitada originalmente para el objeto.
Sintaxis
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
);
Parámetros
[in, optional] ParentDescriptor
Puntero a un búfer que contiene el SECURITY_DESCRIPTOR del directorio primario, si existe, que contiene el nuevo objeto que se va a crear. ParentDescriptor puede ser NULL o tener una lista de control de acceso del sistema (SACL) o una lista de control de acceso discrecional (DACL) NULL.
[in, optional] ExplicitDescriptor
Puntero a un búfer que contiene el SECURITY_DESCRIPTOR especificado por el usuario que se aplica al nuevo objeto. ExplicitDescriptor puede ser NULL o tener una SACL NULL o una DACL NULL .
[out] NewDescriptor
Recibe un puntero al SECURITY_DESCRIPTOR devuelto. SeAssignSecurity asigna el búfer del grupo de memoria paginado.
[in] IsDirectoryObject
Especifica si el nuevo objeto es un objeto de directorio. TRUE indica que el objeto contiene otros objetos.
[in] SubjectContext
Puntero a un búfer que contiene el contexto de seguridad del asunto que crea el objeto. Se usa para recuperar la información de seguridad predeterminada del nuevo objeto, como el propietario predeterminado, el grupo principal y el control de acceso discrecional.
[in] GenericMapping
Puntero a la estructura GENERIC_MAPPING que describe la asignación de cada derecho genérico a los derechos no genéricos implícitos.
[in] PoolType
Este parámetro no se utiliza. El búfer que contiene el nuevo descriptor de seguridad siempre se asigna desde el grupo paginado.
Valor devuelto
SeAssignSecurity puede devolver una de las siguientes opciones:
Código devuelto | Descripción |
---|---|
|
La asignación se realizó correctamente. |
|
El SID proporcionado para el propietario del descriptor de seguridad de destino no es el autor de la llamada para asignar como propietario de un objeto. |
|
El autor de la llamada no tiene el privilegio (SeSecurityPrivilege) necesario para asignar explícitamente la ACL del sistema especificada. |
Comentarios
El descriptor de seguridad final devuelto al autor de la llamada puede contener una combinación de información, algunas proporcionadas explícitamente del elemento primario del nuevo objeto.
SeAssignSecurity supone que no se ha realizado la comprobación de privilegios. Esta rutina realiza la comprobación de privilegios.
La asignación de ACL discrecionales y del sistema se rige por la lógica que se muestra en la tabla siguiente:
ACL explícita (no predeterminada) especificada | ACL predeterminada explícita especificada | No se especificó ninguna ACL | |
---|---|---|---|
ACL heredable del elemento primario | Asignación de la ACL especificada | Asignación de la ACL heredada | Asignación de la ACL heredada |
No se puede heredar ninguna ACL del elemento primario | Asignación de la ACL especificada | Asignación de la ACL predeterminada | Asignar ninguna ACL |
Una ACL especificada explícitamente, ya sea una ACL predeterminada o no, puede estar vacía o nula. El autor de la llamada debe ser un cliente en modo kernel o tener privilegios adecuados para asignar explícitamente una ACL del sistema predeterminada o no predeterminada.
La asignación del propietario y el grupo del nuevo objeto se rige por la lógica siguiente:
- Si el descriptor de seguridad pasado incluye un propietario, se asigna como propietario del nuevo objeto. De lo contrario, el token del autor de la llamada se considera para determinar el propietario. Dentro del token, se asigna el propietario predeterminado, si existe. De lo contrario, se asigna el identificador de usuario del autor de la llamada.
- Si el descriptor de seguridad pasado incluye un grupo, se asigna como grupo del nuevo objeto. De lo contrario, el token del autor de la llamada se considera para determinar el grupo. Dentro del token, se asigna el grupo predeterminado, si existe. De lo contrario, se asigna el identificador de grupo principal del autor de la llamada.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows 2000 y versiones posteriores de Windows. |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |