Classe CAcl

Essa classe é um wrapper para uma estrutura ACL (lista de controle de acesso).

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CAcl

Membros

Typedefs públicos

Nome Descrição
CAcl::CAccessMaskArray Uma matriz de ACCESS_MASKs.
CAcl::CAceFlagArray Uma matriz de BYTEs.
CAcl::CAceTypeArray Uma matriz de BYTEs.

Construtores públicos

Nome Descrição
CAcl::CAcl O construtor .
CAcl::~CAcl O destruidor.

Métodos públicos

Nome Descrição
CAcl::GetAceCount Retorna o número de objetos de ACE (entrada de controle de acesso).
CAcl::GetAclEntries Recupera as entradas da ACL (lista de controle de acesso) do objeto CAcl.
CAcl::GetAclEntry Recupera todas as informações sobre uma entrada em um objeto CAcl.
CAcl::GetLength Retorna o tamanho da ACL.
CAcl::GetPACL Retorna um PACL (ponteiro para uma ACL).
CAcl::IsEmpty Testa o objeto CAcl para entradas.
CAcl::IsNull Retorna o status do objeto CAcl.
CAcl::RemoveAce Remove uma ACE (entrada de controle de acesso) específica do objeto CAcl.
CAcl::RemoveAces Remove todas as ACEs (entradas de controle de acesso) de CAcl que se aplicam ao CSid específico.
CAcl::SetEmpty Marca o objeto CAcl como vazio.
CAcl::SetNull Marca o objeto CAcl como NULL.

Operadores públicos

Nome Descrição
CAcl::operator const ACL * Converte um objeto CAcl em uma estrutura ACL.
CAcl::operator = Operador de atribuição.

Comentários

A estrutura ACL é o cabeçalho de uma ACL (lista de controle de acesso). Uma ACL inclui uma lista sequencial de zero ou mais ACEs (entradas de controle de acesso). As ACEs individuais em uma ACL são numeradas de 0 a n-1, em que n é o número de ACEs na ACL. Ao editar uma ACL, um aplicativo refere-se a uma ACE (entrada de controle de acesso) dentro da ACL por seu índice.

Há dois tipos de ACL:

  • Discricionária

  • Sistema

Uma ACL discricionária é controlada pelo proprietário de um objeto ou qualquer pessoa que recebeu acesso WRITE_DAC ao objeto. Ela especifica o acesso que determinados usuários e grupos podem ter a um objeto. Por exemplo, o proprietário de um arquivo pode usar uma ACL discricionária para controlar quais usuários e grupos podem e não podem ter acesso ao arquivo.

Um objeto também pode ter informações de segurança no nível do sistema associadas a ele, na forma de uma ACL do sistema controlada por um administrador do sistema. Uma ACL do sistema pode permitir que o administrador do sistema audite tentativas de obter acesso a um objeto.

Para obter mais detalhes, confira a discussão sobre ACL no SDK do Windows.

Para ver uma introdução ao modelo de controle de acesso no Windows, confira Controle de Acesso no SDK do Windows.

Requisitos

Cabeçalho: atlsecurity.h

CAcl::CAccessMaskArray

Uma matriz de objetos ACCESS_MASK.

typedef CAtlArray<ACCESS_MASK> CAccessMaskArray;

Comentários

Esse typedef especifica o tipo de matriz que pode ser usado para armazenar direitos de acesso usados em ACEs (entradas de controle de acesso).

CAcl::CAceFlagArray

Uma matriz de BYTEs.

typedef CAtlArray<BYTE> CAceFlagArray;

Comentários

Esse typedef especifica o tipo de matriz usado para definir os sinalizadores de controle específicos de tipo da ACE (entrada de controle de acesso). Confira a definição de ACE_HEADER para obter a lista completa de possíveis sinalizadores.

CAcl::CAceTypeArray

Uma matriz de BYTEs.

typedef CAtlArray<BYTE> CAceTypeArray;

Comentários

Esse typedef especifica o tipo de matriz usado para definir a natureza dos objetos da ACE (entrada de controle de acesso), como ACCESS_ALLOWED_ACE_TYPE ou ACCESS_DENIED_ACE_TYPE. Confira a definição de ACE_HEADER para obter a lista completa de tipos possíveis.

CAcl::CAcl

O construtor .

CAcl() throw();
CAcl(const CAcl& rhs) throw(...);

Parâmetros

rhs
Um objeto CAcl existente.

Comentários

O objeto CAcl pode ser criado opcionalmente usando um objeto CAcl existente.

CAcl::~CAcl

O destruidor.

virtual ~CAcl() throw();

Comentários

O destruidor libera todos os recursos adquiridos pelo objeto.

CAcl::GetAceCount

Retorna o número de objetos de ACE (entrada de controle de acesso).

virtual UINT GetAceCount() const throw() = 0;

Valor de retorno

Retorna o número de entradas de ACE no objeto CAcl.

CAcl::GetAclEntries

Recupera as entradas da ACL (lista de controle de acesso) do objeto CAcl.

void GetAclEntries(
    CSid::CSidArray* pSids,
    CAccessMaskArray* pAccessMasks = NULL,
    CAceTypeArray* pAceTypes = NULL,
    CAceFlagArray* pAceFlags = NULL) const throw(...);

Parâmetros

pSids
Um ponteiro para uma matriz de objetos CSid.

pAccessMasks
As máscaras de acesso.

pAceTypes
Os tipos de ACE (entrada de controle de acesso).

pAceFlags
Os sinalizadores de ACE.

Comentários

Esse método preenche os parâmetros da matriz com os detalhes de cada objeto ACE contido no objeto CAcl. Use NULL quando os detalhes dessa matriz específica não forem necessários.

Os conteúdos de cada matriz correspondem uns aos outros, ou seja, o primeiro elemento da matriz CAccessMaskArray corresponde ao primeiro elemento na matriz CSidArray e assim por diante.

Confira ACE_HEADER para obter mais detalhes sobre os tipos de ACE e sinalizadores.

CAcl::GetAclEntry

Recupera todas as informações sobre uma entrada em uma ACL (lista de controle de acesso).

void GetAclEntry(
    UINT nIndex,
    CSid* pSid,
    ACCESS_MASK* pMask = NULL,
    BYTE* pType = NULL,
    BYTE* pFlags = NULL,
    GUID* pObjectType = NULL,
    GUID* pInheritedObjectType = NULL) const throw(...);

Parâmetros

nIndex
Indexar na entrada da ACL a ser recuperada.

pSid
O objeto CSid ao qual a entrada da ACL se aplica.

pMask
A máscara que especifica permissões para conceder ou negar acesso.

pType
O tipo de ACE.

pFlags
Os sinalizadores de ACE.

pObjectType
O tipo de objeto. Isso será definido como GUID_NULL se o tipo de objeto não for especificado na ACE ou se a ACE não for um OBJECT ACE.

pInheritedObjectType
O tipo de objeto herdado. Isso será definido como GUID_NULL se o tipo de objeto herdado não for especificado na ACE ou se a ACE não for um OBJECT ACE.

Comentários

Esse método recuperará todas as informações sobre uma ACE individual, fornecendo mais informações do que CAcl::GetAclEntries sozinho disponibiliza.

Confira ACE_HEADER para obter mais detalhes sobre os tipos de ACE e sinalizadores.

CAcl::GetLength

Retorna o tamanho da ACL (lista de controle de acesso).

UINT GetLength() const throw();

Valor de retorno

Retorna o tamanho necessário em bytes necessários para manter a estrutura ACL.

CAcl::GetPACL

Retorna um ponteiro para uma ACL (lista de controle de acesso).

const ACL* GetPACL() const throw(...);

Valor de retorno

Retorna um ponteiro para a estrutura ACL.

CAcl::IsEmpty

Testa o objeto CAcl para entradas.

bool IsEmpty() const throw();

Comentários

Retornará TRUE se o objeto CAcl não for NULL e não contiver nenhuma entrada. Retornará FALSE se o objeto CAcl for NULL ou contiver pelo menos uma entrada.

CAcl::IsNull

Retorna o status do objeto CAcl.

bool IsNull() const throw();

Valor de retorno

Retornará TRUE se o objeto CAcl for NULL. Caso contrário, FALSE.

CAcl::operator const ACL *

Converte um objeto CAcl em uma estrutura ACL (lista de controle de acesso).

operator const ACL *() const throw(...);

Comentários

Retorna o endereço da estrutura ACL.

CAcl::operator =

Operador de atribuição.

CAcl& operator= (const CAcl& rhs) throw(...);

Parâmetros

rhs
O CAcl a ser atribuído ao objeto existente.

Valor de retorno

Retorna uma referência ao objeto CAcl atualizado.

CAcl::RemoveAce

Remove uma ACE (entrada de controle de acesso) específica do objeto CAcl.

void RemoveAce(UINT nIndex) throw();

Parâmetros

nIndex
Índice para a entrada da ACE a ser removida.

Comentários

Esse método é derivado de CAtlArray::RemoveAt.

CAcl::RemoveAces

Remove todas as ACEs (entradas de controle de acesso) de CAcl que se aplicam ao CSid específico.

bool RemoveAces(const CSid& rSid) throw(...)

Parâmetros

rSid
Uma referência a um objeto CSid.

CAcl::SetEmpty

Marca o objeto CAcl como vazio.

void SetEmpty() throw();

Comentários

O CAcl pode ser definido como vazio ou NULL: os dois estados são distintos.

CAcl::SetNull

Marca o objeto CAcl como NULL.

void SetNull() throw();

Comentários

O CAcl pode ser definido como vazio ou NULL: os dois estados são distintos.

Confira também

Visão geral da aula
Funções globais de segurança