Compartilhar via


Ordem de ACEs em um DACL

Quando um processo tenta acessar um objeto protegível, o sistema percorre as entradas de controle de acesso (ACEs) na lista de controle de acesso discricionário do objeto (DACL) até encontrar ACEs que permitem ou negam o acesso solicitado. Os direitos de acesso que uma DACL permite a um usuário podem variar dependendo da ordem das ACEs na DACL. Consequentemente, o sistema operacional Windows XP define uma ordem preferencial para ACEs no DACL de um objeto protegível. A ordem preferencial fornece uma estrutura simples que garante que um ACE negado pelo acesso realmente negue o acesso. Para obter mais informações sobre o algoritmo do sistema para verificar o acesso, consulte Como os DACLs controlam o acesso a um objeto.

Para o Windows Server 2003 e o Windows XP, a ordem adequada dos ACEs é complicada pela introdução de ACEs específicos do objeto e herança automática.

As etapas a seguir descrevem a ordem preferencial:

  1. Todas as ACEs explícitas são colocadas em um grupo antes de quaisquer ACEs herdadas.
  2. Dentro do grupo de ACEs explícitos, acEs negados pelo acesso são colocados antes dos ACEs permitidos pelo acesso.
  3. As ACEs herdadas são colocadas na ordem em que são herdadas. AcEs herdadas do pai do objeto filho vêm primeiro, depois ACEs herdadas do avô e assim por diante na árvore de objetos.
  4. Para cada nível de ACEs herdados, as ACEs negadas pelo acesso são colocadas antes dos ACEs permitidos pelo acesso.

É claro que nem todos os tipos de ACE são necessários em uma ACL.

Funções como AddAccessAllowedAceEx e AddAccessAllowedObjectAce adicionar um ACE ao final de uma ACL. É responsabilidade do chamador garantir que os ACEs sejam adicionados na ordem adequada.