Reihenfolge von ACEs in einer DACL
Wenn ein Prozess versucht, auf ein sicherungsfähiges Objekt zuzugreifen, führt das System die Zugriffssteuerungseinträge (ACEs) in der diskretionären Zugriffssteuerungsliste (DACL) durch, bis acEs gefunden werden, die den angeforderten Zugriff zulassen oder verweigern. Die Zugriffsrechte, die ein DACL einem Benutzer zulässt, kann je nach Reihenfolge der ACEs in der DACL variieren. Folglich definiert das Windows XP-Betriebssystem eine bevorzugte Reihenfolge für ACEs in der DACL eines sicherungsfähigen Objekts. Die bevorzugte Reihenfolge stellt ein einfaches Framework bereit, das sicherstellt, dass eine Zugriffsverweigerung der ACE tatsächlich den Zugriff verweigert. Weitere Informationen zum Algorithmus des Systems zum Überprüfen des Zugriffs finden Sie unter How DACLs Control Access to an Object.
Für Windows Server 2003 und Windows XP ist die ordnungsgemäße Reihenfolge von ACEs durch die Einführung objektspezifischer ACEs und der automatischen Vererbung kompliziert.
Die folgenden Schritte beschreiben die bevorzugte Reihenfolge:
- Alle expliziten ACEs werden vor geerbten ACEs in einer Gruppe platziert.
- Innerhalb der Gruppe expliziter ACEs werden Zugriffsverweigerungs-ACEs vor zugriffsgeschützten ACEs platziert.
- Geerbte ACEs werden in der Reihenfolge platziert, in der sie geerbt werden. ACEs, die vom übergeordneten Objekt des untergeordneten Objekts geerbt wurden, kommen zuerst, dann ACEs, die von der Großeltern geerbt wurden, usw. die Struktur der Objekte.
- Für jede Ebene geerbter ACEs werden Zugriffsverweigerungs-ACEs vor zugriffsgeschützten ACEs platziert.
Natürlich sind nicht alle ACE-Typen in einer ACL erforderlich.
Funktionen wie AddAccessAllowedAceEx und AddAccessAllowedObjectAce am Ende einer ACL eine ACE hinzufügen. Es liegt in der Verantwortung des Aufrufers, sicherzustellen, dass die ACEs in der richtigen Reihenfolge hinzugefügt werden.