Ordine degli ACL in un'elenco dati

Quando un processo tenta di accedere a un oggetto a protezione diretta, i passaggi di sistema tramite le voci di controllo di accesso (AES) 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'interfaccia di controllo livello dati consentono a un utente di variare a seconda dell'ordine degli ACL. Di conseguenza, il sistema operativo WINDOWS XP definisce un ordine preferito per gli ACL nell'elenco di controllo dati di un oggetto a protezione diretta. L'ordine preferito fornisce un semplice framework che garantisce che un ACE negato di accesso nega effettivamente l'accesso. Per altre informazioni sull'algoritmo del sistema per controllare l'accesso, vedere How DACLs Control Access to an Object (Come controllare l'accesso a un oggetto).

Per Windows Server 2003 e Windows XP, l'ordine appropriato degli ACL è complicato dall'introduzione degli ACL specifici degli oggetti e dell'ereditarietà automatica.

I passaggi seguenti descrivono l'ordine preferito:

  1. Tutti gli ACL espliciti vengono inseriti in un gruppo prima di qualsiasi ACL ereditato.
  2. All'interno del gruppo di AES espliciti, gli ACL negati di accesso vengono inseriti 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 provengono prima, quindi gli ACL ereditati dai nonni e così via sull'albero degli oggetti.
  4. Per ogni livello di AES ereditato, gli ACL negati di accesso vengono inseriti prima degli ACL consentiti per l'accesso.

Naturalmente, non tutti i tipi ACE sono necessari in un ACL.

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.