Reihenfolge der ACEs in einer DACL

Wenn ein Prozess versucht, auf ein sicherungsfähiges Objekt zuzugreifen, durchläuft das System die Zugriffssteuerungseinträge (ACEs) in der diskretionären Zugriffssteuerungsliste (DACL) des Objekts, bis es ACEs findet, die den angeforderten Zugriff zulassen oder verweigern. Die Zugriffsrechte, die eine DACL einem Benutzer zulässt, können abhängig von der Reihenfolge der ACEs in der DACL variieren. Daher definiert das Windows XP-Betriebssystem eine bevorzugte Reihenfolge für ACEs in der DACL eines sicherungsfähigen Objekts. Die bevorzugte Reihenfolge bietet ein einfaches Framework, das sicherstellt, dass ein ZUGRIFFSVERWEIGERUNGS-ACE tatsächlich den Zugriff verweigert. Weitere Informationen zum Systemalgorithmus zum Überprüfen des Zugriffs finden Sie unter Steuern des Zugriffs auf ein Objekt durch DACLs.

Für Windows Server 2003 und Windows XP wird die richtige Reihenfolge von ACEs durch die Einführung objektspezifischer ACEs und die automatische Vererbung erschwert.

Die folgenden Schritte beschreiben die bevorzugte Reihenfolge:

  1. Alle expliziten ACEs werden in einer Gruppe vor allen geerbten ACEs platziert.
  2. Innerhalb der Gruppe der expliziten ACEs werden Zugriffsverweigerungs-ACEs vor zugriffsberechtigten ACEs platziert.
  3. Geerbte ACEs werden in der Reihenfolge platziert, in der sie geerbt werden. ACEs, die vom übergeordneten Element des untergeordneten Objekts geerbt wurden, kommen zuerst, dann acEs, die vom Großeltern geerbt wurden, und so weiter in der Struktur der Objekte.
  4. Für jede Ebene geerbter ACEs werden Zugriffsverweigerungs-ACEs vor zugriffsberechtigten ACEs platziert.

Natürlich sind nicht alle ACE-Typen in einer ACL erforderlich.

Funktionen wie AddAccessAllowedAceEx und AddAccessAllowedObjectAce fügen ein ACE am Ende einer ACL hinzu. Es liegt in der Verantwortung des Aufrufers sicherzustellen, dass die ACEs in der richtigen Reihenfolge hinzugefügt werden.