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)
|
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.