Compartir a través de


Función SeSetSecurityDescriptorInfoEx (ntifs.h)

La rutina SeSetSecurityDescriptorInfoEx modifica el descriptor de seguridad de un objeto y especifica si el objeto admite la herencia automática de entradas de control de acceso (ACE).

Sintaxis

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

Parámetros

[in, optional] Object

Puntero al objeto cuyo descriptor de seguridad se va a modificar. Esto se usa para actualizar la información de cuota de seguridad.

[in] SecurityInformation

Puntero a un valor que especifica qué información de seguridad se va a establecer. Puede ser una combinación de uno o varios de los siguientes elementos.

Valor Significado
DACL_SECURITY_INFORMATION Indica la lista de control de acceso discrecional (DACL) del objeto que se está configurando. Requiere acceso WRITE_DAC.
GROUP_SECURITY_INFORMATION Indica el identificador de grupo principal del objeto que se está configurando. Requiere acceso WRITE_OWNER.
OWNER_SECURITY_INFORMATION Indica el identificador de propietario del objeto que se está configurando. Requiere acceso WRITE_OWNER.
SACL_SECURITY_INFORMATION Indica que se establece la ACL del sistema (SACL) del objeto. Requiere acceso ACCESS_SYSTEM_SECURITY.

ModificationDescriptor

Descriptor de seguridad de entrada que se va a aplicar al objeto . Se espera que el autor de la llamada de esta rutina sondee y capture el descriptor de seguridad pasado antes de llamar a y para liberarlo después de llamar a.

[in, out] ObjectsSecurityDescriptor

Puntero a un puntero al descriptor de seguridad del objeto. El descriptor de seguridad debe tener un formato auto relativo. El autor de la llamada debe desasignar esta estructura.

[in] AutoInheritFlags

Máscara de bits que controla la herencia automática de ACE. Establezca en el or lógico de una o varias de las marcas de bits siguientes:

Marcas de información de seguridad Significado
SEF_DACL_AUTO_INHERIT Si se establece esta marca, la DACL se trata como una DACL heredada automáticamente y se procesa como se describe en la sección Comentarios siguiente. Este bit se omite si DACL_SECURITY_INFORMATION no está establecido en el parámetro SecurityInformation .
SEF_SACL_AUTO_INHERIT Si se establece esta marca, sacl se trata como una SACL heredada automáticamente y se procesa como se describe en la sección Comentarios siguiente. Este bit se omite si SACL_SECURITY_INFORMATION no está establecido en el parámetro SecurityInformation .

[in] PoolType

Especifica el tipo de grupo que se va a usar al asignar un nuevo descriptor de seguridad, que puede ser uno de los siguientes:

  • NonPagedPool
  • PagedPool
  • NonPagedPoolCacheAligned
  • PagedPoolCacheAligned

Normalmente, un llamador especifica PagedPool o NonPagedPool si se accede al búfer en IRQL >= DISPATCH_LEVEL o en un contexto de subproceso arbitrario.

Los tipos de grupo NonPagedPoolMustSucceed y NonPagedPoolCacheAlignedMustS están obsoletos y ya no deben usarse.

[in] GenericMapping

Puntero a una estructura de GENERIC_MAPPING que especifica la asignación de tipos de acceso genéricos a específicos y estándar para el objeto al que se accede. Se espera que esta estructura de asignación sea segura para acceder (es decir, capturada si es necesario) antes de pasarse a esta rutina.

Valor devuelto

Código devuelto Descripción
STATUS_SUCCESS El descriptor de seguridad del objeto se modificó correctamente.
STATUS_BAD_DESCRIPTOR_FORMAT El descriptor de seguridad del objeto proporcionado no estaba en formato relativo a sí mismo.
STATUS_NO_SECURITY_ON_OBJECT El objeto no tiene un descriptor de seguridad.

Comentarios

Si el parámetro AutoInheritFlags es cero, el efecto de llamar a SeSetSecurityDescriptorInfoEx es el mismo que el de llamar a SeSetSecurityDescriptorInfo.

Si AutoInheritFlags especifica el bit de SEF_DACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx aplica las siguientes reglas a la DACL para crear el nuevo descriptor de seguridad a partir del descriptor actual:

  • Si la marca SE_DACL_PROTECTED no está establecida en los bits de control del descriptor de seguridad actual o del securityDescriptor de entrada, SeSetSecurityDescriptorInfoEx construye el descriptor de seguridad de salida a partir de los ACE heredados del descriptor de seguridad actual y los ACE noherited de SecurityDescriptor. Es decir, es imposible cambiar una ACE heredada cambiando la ACL en un objeto. Este comportamiento conserva los ASE heredados a medida que se heredan del contenedor primario.

  • Si SE_DACL_PROTECTED se establece en el securityDescriptor de entrada, se omite el descriptor de seguridad actual. El descriptor de seguridad de salida se crea como una copia del securityDescriptor de entrada con los bits de INHERITED_ACE desactivados.

Lo ideal es que un editor de ACL desactive los bits de INHERITED_ACE que indican a su autor de la llamada que los ACL heredados del elemento primario del objeto ahora se establecen explícitamente en el objeto .

  • Si SE_DACL_PROTECTED se establece en el descriptor de seguridad actual y no en securityDescriptor, se omite el descriptor de seguridad actual. El descriptor de seguridad de salida se crea como una copia del SecurityDescriptor. Es responsabilidad del autor de la llamada asegurarse de que los ACE correctos tienen activado el bit de INHERITED_ACE.

Si AutoInheritFlags especifica el bit de SEF_SACL_AUTO_INHERIT, SeSetSecurityDescriptorInfoEx aplica reglas similares a la nueva SACL.

Para obtener más información sobre el control de acceso y la herencia ACE, consulte la sección Seguridad de la documentación de Microsoft Windows SDK.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

AS

ACL

GENERIC_MAPPING

RtlCreateSecurityDescriptor

RtlCreateSecurityDescriptorRelative

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SeQuerySecurityDescriptorInfo

SeSetSecurityDescriptorInfo