Función SetPrivateObjectSecurity (securitybaseapi.h)

La función SetPrivateObjectSecurity modifica el descriptor de seguridad de un objeto privado.

Para especificar si el servidor protegido admite la herencia automática de entradas de control de acceso (ACE), use la función SetPrivateObjectSecurityEx .

Sintaxis

BOOL SetPrivateObjectSecurity(
  [in]           SECURITY_INFORMATION SecurityInformation,
  [in]           PSECURITY_DESCRIPTOR ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  [in]           PGENERIC_MAPPING     GenericMapping,
  [in, optional] HANDLE               Token
);

Parámetros

[in] SecurityInformation

Indica las partes del descriptor de seguridad que se van a establecer. Este valor puede ser una combinación de las marcas de bits de SECURITY_INFORMATION.

[in] ModificationDescriptor

Puntero a una estructura SECURITY_DESCRIPTOR . Las partes de este descriptor de seguridad indicados por el parámetro SecurityInformation se aplican al descriptor de seguridad ObjectsSecurityDescriptor .

[in, out] ObjectsSecurityDescriptor

Puntero a un puntero a una estructura de SECURITY_DESCRIPTOR . Este descriptor de seguridad debe estar en forma auto relativa . La memoria del descriptor de seguridad debe asignarse desde el montón de procesos (GetProcessHeap) con la función HeapAlloc.

En la entrada, este es el descriptor de seguridad actual del objeto privado. La función lo modifica para generar el nuevo descriptor de seguridad. Si es necesario, la función SetPrivateObjectSecurity asigna memoria adicional para generar un descriptor de seguridad mayor.

[in] GenericMapping

Puntero a una estructura de GENERIC_MAPPING que especifica los derechos de acceso específicos y estándar que corresponden a cada uno de los derechos de acceso genéricos.

[in, optional] Token

Identificador del token de acceso del cliente en cuyo nombre se está modificando la seguridad del objeto privado. Este parámetro es necesario para asegurarse de que el cliente ha proporcionado un valor legítimo para un nuevo identificador de seguridad de propietario (SID). El token debe estar abierto para TOKEN_QUERY acceso.

Valor devuelto

Si la función se ejecuta correctamente, la función devuelve un valor distinto de cero.

Si se produce un error en la función, devuelve cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Esta función está pensada solo para que la usen los administradores de recursos. Para implementar la semántica de control de acceso estándar para actualizar los descriptores de seguridad, un administrador de recursos debe comprobar que se cumplen las condiciones siguientes antes de llamar a SetPrivateObjectSecurity:

  • Si se establece el propietario del objeto, el proceso de llamada debe tener WRITE_OWNER permiso o ser el propietario del objeto.
  • Si se establece la lista de control de acceso discrecional (DACL) del objeto, el proceso de llamada debe tener WRITE_DAC permiso o ser el propietario del objeto.
  • Si se establece la lista de control de acceso del sistema (SACL) del objeto, se debe habilitar el privilegio SE_SECURITY_NAME para el proceso de llamada.
Si no se cumplen las condiciones anteriores, no se produce un error en una llamada a esta función; sin embargo, no se aplica la directiva de acceso estándar.

El proceso que llama a esta función no debe suplantar a un cliente porque los clientes no suelen tener los privilegios adecuados necesarios para las operaciones de token subyacentes.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado securitybaseapi.h (incluya Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

Funciones de Access Control cliente/servidor

Introducción a la Access Control de cliente/servidor

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity