Função ConvertToAutoInheritPrivateObjectSecurity (securitybaseapi.h)

A função ConvertToAutoInheritPrivateObjectSecurity converte um descritor de segurança e suas ACLs ( listas de controle de acesso ) em um formato que dá suporte à propagação automática de ACEs ( entradas de controle de acesso herdadas).

Sintaxe

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

Um ponteiro para o descritor de segurança para o contêiner pai do objeto. Se não houver nenhum contêiner pai, esse parâmetro será NULL.

[in] CurrentSecurityDescriptor

Um ponteiro para o descritor de segurança atual do objeto.

[out] NewSecurityDescriptor

Um ponteiro para uma variável que recebe um ponteiro para o descritor de segurança auto-relativo recém-alocado. É responsabilidade do chamador chamar a função DestroyPrivateObjectSecurity para liberar esse descritor de segurança.

[in, optional] ObjectType

Um ponteiro para uma estrutura GUID que identifica o tipo de objeto associado ao parâmetro CurrentSecurityDescriptor . Se o objeto não tiver um GUID, esse parâmetro deverá ser NULL.

[in] IsDirectoryObject

Se TRUE, o novo objeto será um contêiner e poderá conter outros objetos. Se FALSE, o novo objeto não será um contêiner.

[in] GenericMapping

Um ponteiro para uma estrutura de GENERIC_MAPPING que especifica o mapeamento de cada direito genérico para direitos específicos para o objeto.

Retornar valor

Se a função for bem-sucedida, a função retornará diferente de zero.

Se a função falhar, ela retornará zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

A função ConvertToAutoInheritPrivateObjectSecurity tenta determinar se os ACEs na LISTA de controle de acesso discricionário (DACL) e na SACL ( lista de controle de acesso do sistema ) do descritor de segurança atual foram herdados do descritor de segurança pai. A função passa o parâmetro ParentDescriptor para a função CreatePrivateObjectSecurityEx para obter ACLs que contêm apenas ACEs herdadas. Em seguida, ele compara esses ACEs com os ACEs no descritor de segurança original para determinar quais dos ACEs originais foram herdados. Os ACEs não precisam corresponder um para um. Por exemplo, um ACE que permite acesso de leitura e gravação a um administrador pode ser equivalente a dois ACEs: um ACE que permite acesso de leitura e um ACE que permite acesso de gravação.

Todos os ACEs no descritor de segurança original que são equivalentes aos ACEs herdados do descritor de segurança pai são marcados com o sinalizador INHERITED_ACE e adicionados ao novo descritor de segurança. Todos os outros ACEs no descritor de segurança original são adicionados ao novo descritor de segurança como ACEs não herdados.

Se a DACL original não tiver aces herdados, a função definirá o sinalizador SE_DACL_PROTECTED nos bits de controle do novo descritor de segurança. Da mesma forma, o sinalizador SE_SACL_PROTECTED será definido se nenhum dos ACEs no SACL for herdado.

Para DACLs que herdaram ACEs, a função reordena os ACEs em dois grupos. O primeiro grupo tem ACEs que foram aplicados diretamente ao objeto . O segundo grupo herdou ACEs. Essa ordenação garante que ACEs não herdados tenham precedência sobre ACEs herdados. Para obter mais informações, consulte Ordem das ACEs em uma DACL.

A função define os sinalizadores SE_DACL_AUTO_INHERITED e SE_SACL_AUTO_INHERITED nos bits de controle do novo descritor de segurança.

A função não altera a ordenação de ACEs permitidas pelo acesso em relação aos ACEs negados pelo acesso na DACL, pois isso alteraria a semântica do descritor de segurança resultante. Se a função não puder converter a DACL sem alterar a semântica, ela deixará a DACL inalterada e definirá o sinalizador SE_DACL_PROTECTED.

O novo descritor de segurança tem o mesmo proprietário e grupo primário que o descritor de segurança original.

O novo descritor de segurança é equivalente ao descritor de segurança original, portanto, o chamador não precisa de direitos de acesso ou privilégios para atualizar o descritor de segurança para o novo formato.

Essa função funciona com ACLs ACL_REVISION e ACL_REVISION_DS.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho securitybaseapi.h (inclua Windows.h)
Biblioteca Advapi32.lib
DLL Advapi32.dll

Confira também

Controle de Acesso cliente/servidor

Funções de Controle de Acesso de cliente/servidor

CreatePrivateObjectSecurityEx

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GUID