Función SeAssignSecurityEx (wdm.h)
La rutina SeAssignSecurityEx crea un descriptor de seguridad auto relativo para un nuevo objeto dados los siguientes parámetros opcionales: un descriptor de seguridad del directorio primario del objeto, un descriptor de seguridad explícito para el objeto y el tipo de objeto.
Sintaxis
NTSTATUS SeAssignSecurityEx(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in, optional] PSECURITY_DESCRIPTOR ExplicitDescriptor,
[out] PSECURITY_DESCRIPTOR *NewDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] ULONG AutoInheritFlags,
[in] PSECURITY_SUBJECT_CONTEXT SubjectContext,
[in] PGENERIC_MAPPING GenericMapping,
[in] POOL_TYPE PoolType
);
Parámetros
[in, optional] ParentDescriptor
Puntero al SECURITY_DESCRIPTOR del objeto primario 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) NULL o una lista de control de acceso discrecional (DACL) NULL.
[in, optional] ExplicitDescriptor
Puntero a un SECURITY_DESCRIPTOR explícito que se aplica al nuevo objeto. ExplicitDescriptor puede ser NULL o tener un SACL NULL o una DACL NULL .
[out] NewDescriptor
Recibe un puntero al SECURITY_DESCRIPTOR devuelto. SeAssignSecurityEx asigna el búfer del grupo de memoria paginada.
[in, optional] ObjectType
Puntero a un GUID para el tipo de objeto que se va a crear. Si el objeto no tiene un GUID, ObjectType debe establecerse en NULL.
[in] IsDirectoryObject
Especifica si el nuevo objeto es un objeto de directorio. Si IsDirectoryObject se establece en TRUE, el nuevo objeto es un objeto de directorio; de lo contrario, el nuevo objeto no es un objeto de directorio.
[in] AutoInheritFlags
Especifica el tipo de herencia automática que se aplica a las entradas de control de acceso (ACE) en las listas de control de acceso (ACL) especificadas por ParentDescriptor. AutoInheritFlags también controla la comprobación de privilegios, la comprobación de propietarios y el establecimiento de un propietario y un grupo predeterminados para NewDescriptor. AutoInheritFlags debe establecerse en un OR lógico de uno o varios de los valores siguientes:
Valor | Significado |
---|---|
SEF_DACL_AUTO_INHERIT | NewDescriptor hereda las ACE de la DACL de ParentDescriptor, además de los ASE explícitos especificados por ExplicitDescriptor. |
SEF_SACL_AUTO_INHERIT | NewDescriptor hereda los ASE en la SACL de ParentDescriptor, además de los ASE explícitos especificados por ExplicitDescriptor. |
SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT | ExplicitDescriptor es el descriptor predeterminado para el tipo de objeto especificado por ObjectType. ExplicitDescriptor no se usa si se heredan de ParentDescriptor. |
SEF_AVOID_PRIVILEGE_CHECK | No se realiza la comprobación de privilegios. Esta marca es útil con la herencia automática, ya que evita la comprobación de privilegios en cada elemento secundario que debe actualizarse. |
SEF_AVOID_OWNER_CHECK | No se realiza la comprobación del propietario. |
SEF_DEFAULT_OWNER_FROM_PARENT |
Si explicitDescriptor especifica un propietario, esta marca no se usa y el propietario de NewDescriptor se establece en el propietario especificado por ExplictDescriptor.
Si explicitDescriptor no especifica un propietario, esta marca se usa de la siguiente manera: si se establece la marca, el propietario de NewDescriptor se establece en el propietario de ParentDescriptor. De lo contrario, el propietario de NewDescriptor se establece en el propietario especificado por SubjectContext. |
SEF_DEFAULT_GROUP_FROM_PARENT |
Si explicitDescriptor especifica un grupo, esta marca no se usa y el grupo de NewDescriptor se establece en el grupo especificado por ExplictDescriptor.
Si explicitDescriptor no especifica un grupo, esta marca se usa de la siguiente manera: si se establece la marca, el grupo de NewDescriptor se establece en el grupo de ParentDescriptor. De lo contrario, el grupo de NewDescriptor se establece en el grupo especificado por SubjectContext. |
La asignación de ACL discrecionales y del sistema se describe en la tabla siguiente:
Descriptor explícito no predeterminado(1) | Descriptor explícito predeterminado(2) | NULL Descriptor explícito | |
---|---|---|---|
La ACL se hereda del descriptor primario(3). | Asigne las ACL heredadas y explícitas(5)(6). | Asigne la ACL heredada. | Asigne la ACL heredada. |
La ACL no se hereda del descriptor primario(4). | Asigne una ACL no predeterminada. | Asigne la ACL predeterminada. | No asigne ninguna ACL. |
Notas sobre la asignación
- No se especifica la marca SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT.
- Se especifica la marca SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT.
- Se especifica la marca de herencia automática de una ACL (SEF_DACL_AUTO_INHERIT o SEF_SACL_AUTO_INHERIT).
- No se especifica la marca de herencia automática para una ACL.
- Los ASE con el INHERITED_ACE bit establecido en su miembro AceFlagsno se copian en el descriptor de seguridad asignado.
- Los ACL que se heredan del descriptor primario se anexan después de los ACL especificados por el descriptor explícito.
[in] SubjectContext
Puntero a un contexto de seguridad del asunto que crea el objeto. SubjectContext se usa para recuperar la información de seguridad predeterminada del nuevo objeto, incluido el propietario predeterminado, el grupo principal y el control de acceso discrecional.
[in] GenericMapping
Puntero a una matriz de valores de máscara de acceso que especifican la asignación entre cada derecho genérico a derechos específicos del objeto.
[in] PoolType
Este parámetro no se utiliza. El búfer que contendrá el nuevo descriptor de seguridad siempre se asigna desde el grupo paginado.
Valor devuelto
SeAssignSecurityEx devuelve uno de los valores siguientes:
Código devuelto | Descripción |
---|---|
|
La asignación se realizó correctamente. |
|
El SID proporcionado como propietario del nuevo descriptor de seguridad no es un SID que el autor de la llamada tiene autorización para asignar como propietario de un objeto. |
|
El autor de la llamada no tiene el privilegio (SeSecurityPrivilege) necesario para asignar explícitamente el SACL especificado. |
Comentarios
SeAssignSecurityEx amplía el funcionamiento básico de SeAssignSecurity de las siguientes maneras:
- ObjectType especifica opcionalmente un tipo de objeto. La herencia específica del objeto se controla mediante los siguientes miembros de una ACE específica del objeto: Flags, InheritedObjectType y Header.AceFlags.
- AutoInheritFlags especifica el tipo de herencia automática de AEC que se usa. AutoInheritFlags también controla la comprobación de privilegios, la comprobación de propietarios y el establecimiento de un propietario y un grupo predeterminados para NewDescriptor.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 2000. |
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) |