Access Control List (ACL)

Die Access Control List (ACL), deutsch Zugangskontrollliste, wird von Betriebssystemen und Anwendungen verwendet, um zu kontrollieren, welcher Benutzer zu welchen Diensten (Dateien, Netzwerkdiensten) Zugang hat. ACLs sind meist feiner einstellbar als reguläre Zugriffsrechte (lesen, schreiben, ändern, ausführen oder Vollzugriff)

r  read lesen lesen, ausführen ändern Vollzugriff
x  execute  
w  write  
d  delete
o  take ownership  
p  permission

Hinweis:
 

Benutzer sollten möglichst nie die Berechtigung "Vollzugriff" vergeben, sondern höchstens die Berechtigung "ändern", damit ihnen nicht der Besitz entzogen werden kann und sie immer die Hoheit über die Rechtevergabe behalten.

Unter Microsoft Windows NT, 2000, XP, 2003 Server wird jedem Betriebssystemobjekt (Dateien, Prozesse etc.) ein Security Descriptor zugeordnet, der eine ACL enthalten kann. Ist keine ACL vorhanden, so erhält jeder Benutzer Vollzugriff auf das Objekt. Ist die ACL vorhanden, aber leer, so erhält kein Benutzer Zugriff. Eine ACL besteht aus einem Header und beliebig vielen Access Control Entries (ACE). Ein ACE enthält jeweils die Information, ob einem Benutzer oder einer Benutzergruppe eine bestimmte Zugriffsart erlaubt (allow) oder verweigert (deny) werden soll. Der Windows-Explorer schreibt die Einträge, die Zugriff verweigern, an den Anfang der ACL. Fordert nun ein Benutzer Zugriff auf ein Objekt an, so geht der Windows Object Manager die Liste von Anfang an durch. Sobald Einträge für alle angeforderten Rechte gefunden wurden, erlaubt oder verweigert der Object Manager entsprechend den Zugriff. Trifft der Object Manager beim Durchgehen der Liste auf einen Eintrag, der den Zugriff verweigert, wird die Suche abgebrochen und der Zugriff auf das Objekt verweigert.

Im Bild links kann man erkennen, wie man die Zugriffsberechtigungen einrichten kann. Das Fenster wurde mit der rechten Maustaste auf dem Ordner "C:\Programme" geöffnet, nach der Auswahl von "Eigenschaften". Im oberen Teil sind einzelne Benutzergruppen aufgelistet, erkennbar am Symbol "Doppelkopf". Es können dort auch einzelne Benutzeraccounts aufgeführt sein, die haben dann nur einen Kopf.

Zu jedem Benutzergruppen - Eintrag gibt es unten eine Liste der Berechtigungen, bei denen man Zugriffe zulassen oder verweigern kann. In dem Beispiel dürfen Mitglieder der Gruppe "Benutzer" den Inhalt des Ordners auflisten, einzelne Dateien lesen und ausführen, aber keine Änderungen vornehmen. Dies bedeutet zum Beispiel, daß ein normaler Benutzer keinen neuen Ordner erstellen darf.

Intern wird diese Konfiguration natürlich irgendwo gespeichert. Jeder einzelne Eintrag in dieser Liste ist eine Struktur vom Typ "Access Control Entry" (ACE), die Liste kann aber auch leer sein (dazu später mehr). Ein ACE enthält immer einen SID zur Identifikation des Benutzers oder der Gruppe um die es geht, und eine Liste mit Genehmigungen oder Verboten, wie im Beispiel links dargestellt.

Es kann dabei durchaus zu Konflikten kommen: Der Benutzer Meyer kann ein Verbot haben, auf eine Datei zuzugreifen. Er ist aber Mitglied der Gruppe "Generalsekretäre", und diese Gruppe hat das Zugriffsrecht. Die Strategie geht daher so: Bei der Überprüfung wird ACE für ACE abgearbeitet. Wird ein ACE angetroffen, der auch nur eine der angefragten Berechtigungen verbietet, so ist der Vergleich fertig und der Zugriff wird verweigert. Wird ein ACE angetroffen, der alle angefragten Rechte erteilt, wird der Zugriff erlaubt. Es ist also wichtig, in welcher Reihenfolge die Einträge in der Liste stehen. Neben der gezeigten DACL enthält ein Security Descriptor auch noch eine SACL ("Security Access Control List"), die dafür verwendet wird, um alle Versuche (ob gelungen oder gescheitert), auf eine Ressource zuzugreifen, in ein spezielles Protokoll zu schreiben.

  Microsofr-Artikel (308419)

Wenn ich jetzt eine neue Datei anlege, wie bekommt die denn ihren Security Descriptor überhaupt mit Einträgen gefüllt ? Um diese Frage zu klären, müssen erst die Access Tokens erklärt werden.