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:
- Todas as ACEs explícitas são colocadas em um grupo antes de quaisquer ACEs herdadas.
- Dentro do grupo de ACEs explícitos, acEs negados pelo acesso são colocados antes dos ACEs permitidos pelo acesso.
- 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.
- 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.