Ordine degli ACL in un DACL
Quando un processo tenta di accedere a un oggetto a protezione diretta, il sistema esegue i passaggi delle voci di controllo di accesso (ACL) nell'elenco di controllo di accesso discrezionale dell'oggetto (DACL) fino a quando non trova gli ACL che consentono o negano l'accesso richiesto. I diritti di accesso consentiti da un daCL possono variare a seconda dell'ordine degli ACL nell'elenco di controllo di accesso. Di conseguenza, il sistema operativo Windows XP definisce un ordine preferito per gli ACL nell'elenco DACL di un oggetto a protezione diretta. L'ordine preferito fornisce un framework semplice che garantisce che un ace negato all'accesso neghi effettivamente l'accesso. Per altre informazioni sull'algoritmo del sistema per il controllo dell'accesso, vedere How DACLs Control Access to an Object.
Per Windows Server 2003 e Windows XP, l'ordine corretto degli ACL è complicato dall'introduzione di ACL specifici dell'oggetto e dell'ereditarietà automatica.
I passaggi seguenti descrivono l'ordine preferito:
- Tutti gli ACL espliciti vengono inseriti in un gruppo prima degli ACL ereditati.
- All'interno del gruppo di ACL espliciti, gli ACL negati dall'accesso vengono posizionati prima degli ACL consentiti per l'accesso.
- Gli ACL ereditati vengono inseriti nell'ordine in cui vengono ereditati. Gli ACL ereditati dall'elemento padre dell'oggetto figlio vengono prima, quindi gli ACL ereditati dai nonni e così via sull'albero degli oggetti.
- Per ogni livello di ACL ereditato, gli ACL negati dall'accesso vengono posizionati prima degli ACL consentiti per l'accesso.
Naturalmente, non tutti i tipi ACE sono necessari in un ACL.
Funzioni come AddAccessAllowedAceEx e AddAccessAllowedObjectAce aggiungere un ace alla fine di un ACL. È responsabilità del chiamante assicurarsi che gli ACL vengano aggiunti nell'ordine corretto.