Función ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)
La función ConvertToAutoInheritPrivateObjectSecurity convierte un descriptor de seguridad y sus listas de control de acceso (ACL) a un formato que admite la propagación automática de entradas de control de acceso heredables (ACE).
Sintaxis
BOOL ConvertToAutoInheritPrivateObjectSecurity(
[in, optional] PSECURITY_DESCRIPTOR ParentDescriptor,
[in] PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
[in, optional] GUID *ObjectType,
[in] BOOLEAN IsDirectoryObject,
[in] PGENERIC_MAPPING GenericMapping
);
Parámetros
[in, optional] ParentDescriptor
Puntero al descriptor de seguridad del contenedor primario del objeto . Si no hay ningún contenedor primario, este parámetro es NULL.
[in] CurrentSecurityDescriptor
Puntero al descriptor de seguridad actual del objeto.
[out] NewSecurityDescriptor
Puntero a una variable que recibe un puntero al descriptor de seguridad autodirección asignado recientemente. Es responsabilidad del autor de la llamada llamar a la función DestroyPrivateObjectSecurity para liberar este descriptor de seguridad.
[in, optional] ObjectType
Puntero a una estructura GUID que identifica el tipo de objeto asociado al parámetro CurrentSecurityDescriptor . Si el objeto no tiene un GUID, este parámetro debe ser NULL.
[in] IsDirectoryObject
Si es TRUE, el nuevo objeto es un contenedor y puede contener otros objetos. Si es FALSE, el nuevo objeto no es un contenedor.
[in] GenericMapping
Puntero a una estructura de GENERIC_MAPPING que especifica la asignación de cada derecho genérico a derechos específicos para el objeto.
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
La función ConvertToAutoInheritPrivateObjectSecurity intenta determinar si las ACE de la lista de control de acceso discrecional (DACL) y la lista de control de acceso del sistema (SACL) del descriptor de seguridad actual se heredaron del descriptor de seguridad primario. La función pasa el parámetro ParentDescriptor a la función CreatePrivateObjectSecurityEx para obtener las ACL que solo contienen ACL heredadas. A continuación, compara estos ASE con los ACE en el descriptor de seguridad original para determinar cuáles de las ACE originales se heredaron. Los ACE no necesitan coincidir uno a uno. Por ejemplo, una ACE que permite el acceso de lectura y escritura a un administrador puede ser equivalente a dos ACE: una ACE que permite el acceso de lectura y una ACE que permite el acceso de escritura.
Todas las ACE del descriptor de seguridad original equivalentes a las ACE heredadas del descriptor de seguridad primario se marcan con la marca INHERITED_ACE y se agregan al nuevo descriptor de seguridad. Todos los demás ACE del descriptor de seguridad original se agregan al nuevo descriptor de seguridad como ACE noheritadas.
Si la DACL original no tiene ace heredadas, la función establece la marca SE_DACL_PROTECTED en los bits de control del nuevo descriptor de seguridad. Del mismo modo, la marca SE_SACL_PROTECTED se establece si no se hereda ninguna de las ACE en la SACL.
En el caso de las DACL que tienen ACE heredadas, la función reordena los ACL en dos grupos. El primer grupo tiene ACE que se aplicaron directamente al objeto . El segundo grupo ha heredado acees. Esta ordenación garantiza que los ACE noheritados tengan prioridad sobre los ACE heredadas. Para más información, consulte Orden de las entradas de control de acceso en una lista de control de acceso discrecional.
La función establece las marcas SE_DACL_AUTO_INHERITED y SE_SACL_AUTO_INHERITED en los bits de control del nuevo descriptor de seguridad.
La función no cambia el orden de las ACE permitidas por el acceso en relación con los ACE denegados de acceso en la DACL porque para ello cambiaría la semántica del descriptor de seguridad resultante. Si la función no puede convertir la DACL sin cambiar la semántica, deja la DACL sin cambios y establece la marca SE_DACL_PROTECTED.
El nuevo descriptor de seguridad tiene el mismo propietario y grupo principal que el descriptor de seguridad original.
El nuevo descriptor de seguridad es equivalente al descriptor de seguridad original, por lo que el autor de la llamada no necesita derechos de acceso ni privilegios para actualizar el descriptor de seguridad al nuevo formato.
Esta función funciona con ACL_REVISION y ACL_REVISION_DS ACL.
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
Access Control cliente/servidor