Ordine degli ACL in un DACL

Quando un processo tenta di accedere a un oggetto a protezione diretta, il sistema esegue i passaggi attraverso le 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 DACL. 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 di accesso negato nega effettivamente l'accesso. Per altre informazioni sull'algoritmo del sistema per controllare l'accesso, vedere How DACLs Control Access to an Object .For more information about the system's algorithm for check access, see 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:

  1. Tutti gli ACL espliciti vengono inseriti in un gruppo prima di tutti gli ACL ereditati.
  2. All'interno del gruppo di AE espliciti, gli ACL negati dall'accesso vengono posizionati prima degli ACL consentiti per l'accesso.
  3. 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 dal padre e così via sull'albero degli oggetti.
  4. 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 elenco di controllo di accesso.

Funzioni come AddAccessAllowedAceEx e AddAccessAllowedObjectAce aggiungono un ACE alla fine di un ACL. È responsabilità del chiamante assicurarsi che gli ACL vengano aggiunti nell'ordine appropriato.