Ordem de ACEs em uma DACL
Quando um processo tenta acessar um objeto protegível, o sistema percorre as ACEs ( entradas de controle de acesso ) na DACL ( lista de controle de acesso discricionário ) 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 negada 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íficas de 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ícitas, aces negados por acesso são colocados antes de ACEs permitidas pelo acesso.
- AcEs herdados são colocados na ordem em que são herdados. AcEs herdados do pai do objeto filho vêm primeiro, depois ACEs herdados do avô e assim por diante na árvore de objetos.
- Para cada nível de ACEs herdadas, as ACEs negadas pelo acesso são colocadas antes dos ACEs permitidos pelo acesso.
É claro que nem todos os tipos ace são necessários em uma ACL.
Funções como AddAccessAllowedAceEx e AddAccessAllowedObjectAce adicionam uma ACE ao final de uma ACL. É responsabilidade do chamador garantir que as ACEs sejam adicionadas na ordem adequada.