Ordem das ACEs em uma DACL
Quando um processo de tenta acessar um objeto protegível, o sistema percorre as entradas de controle de acesso (ACEs) na lista de controle de acesso discricionário (DACL) do objeto 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 na DACL de um objeto protegível. A ordem preferencial fornece uma estrutura simples que garante que uma ACE de acesso negado realmente negue o acesso. Para obter mais informações sobre o algoritmo do sistema para verificar o acesso, consulte Como as DACLs controlam o acesso a um objeto.
Para Windows Server 2003 e Windows XP, a ordem adequada das ACEs é complicada pela introdução de ACEs específicas do objeto e herança automática.
As etapas a seguir descrevem a ordem preferida:
- Todas as ACEs explícitas são colocadas em um grupo antes de quaisquer ACEs herdadas.
- Dentro do grupo de ACEs explícitas, as ACEs de acesso negado são colocadas antes das ACEs de acesso permitido.
- As ACEs herdadas são colocadas na ordem em que são herdadas. As ACEs herdadas do pai do objeto filho vêm primeiro, depois as ACEs herdadas do avô e assim por diante na árvore de objetos.
- Para cada nível de ACEs herdadas, as ACEs de acesso negado são colocadas antes das ACEs de acesso permitido.
É claro que nem todos os tipos de ACE são necessários em uma ACL.
Funções como AddAccessAllowedAceEx e AddAccessAllowedObjectAce adicionar uma ACE ao final de uma ACL. É responsabilidade do chamador garantir que as ACEs sejam adicionadas na ordem correta.