Access Control List
Eine {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) (kurz {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value), englisch für Zugriffssteuerungsliste, kurz ZSL<ref>Martin Grotegut: Windows Vista. Springer Science+Business Media, S. 10.</ref>) ist eine Software-Technik, mit der Betriebssysteme und Anwendungsprogramme Zugriffe auf Daten und Funktionen eingrenzen können. Eine ACL legt fest, in welchem Umfang einzelne Benutzer und Systemprozesse Zugriff auf bestimmte Objekte (wie Dienste, Dateien, Registrier-Einträge usw.) haben.
Im Unterschied zu einfachen Zugriffsrechten sind ACLs feiner einstellbar. So können mit ACLs für eine Datei für mehrere Benutzer und mehrere Gruppen unterschiedliche Rechte vergeben werden<ref>Access Control Lists – win32. In: Microsoft Learn. 21. September 2022, abgerufen am 22. Januar 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>, während unter Unix mit einfachen Zugriffsrechten nur die Rechtevergabe für den Besitzer, eine Gruppe und den „Rest der Welt“ möglich ist.<ref>Glen Newell: An introduction to Linux Access Control Lists (ACLs). Red Hat, 6. Februar 2020, abgerufen am 22. Januar 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Multics
Bei der Entwicklung von Multics wurden 1965 erstmals {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) auf dem Multics-Dateisystem implementiert.<ref name="Multics_ACLs_Elementary_Information_Security"> “{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)”</ref> ACLs wurden notwendig, um Zugriffsrechte per {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) zu ermöglichen und folgendes Problem zu lösen:<ref></ref>
- Den Zugriff für die gesamte Benutzer-Gemeinschaft sperren.
- Nur-Lese-Zugriff für eine bestimmte Benutzer-Gruppe gewähren.
- Lese-/Schreib-Zugriff für eine zweite Benutzer-Gruppe ermöglichen.
Ein konkretes Beispiel von Multics-ACLs:<ref name="Multics_ACLs_Elementary_Information_Security" />
rew Max.Wikipedianer.* r Backup.SysDaemon.* r *.Wikipedianer.* rw *.SysAdmin.*
Benutzer Max aus der Gruppe Wikipedianer ist der Besitzer der spezifischen Datei, er hat Lese-, Schreib- und Ausführungsrechte. Benutzer Backup aus der Gruppe SysDaemon hat nur Leserechte, denn das genügt für den System-Prozess (Daemon), der im Hintergrund wiederkehrende Datensicherungen erledigt. Zusätzlich haben Mitglieder der Gruppe Wikipedianer ebenfalls Leserechte, während Mitglieder der Gruppe SysAdmin (Systemadministratoren) zusätzlich auch Schreibrechte besitzen.
Mit den Standard-Unix-Dateirechten ist eine Umsetzung von {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) nicht möglich. Zwar könnte man dem Benutzer Max und der Gruppe Wikipedianer die nötigen Rechte erteilen, aber nicht gleichzeitig dem Backup-Prozess (Benutzer/Gruppe Backup.SysDaemon) die Nur-Lese-Berechtigung oder der SysAdmin-Gruppe die Lese-/Schreibrechte.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Unix und Linux
Unix wurde ab 1969 als Alternative zu Multics entwickelt. In der Unix-Welt versteht man unter {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value) bzw. „POSIX ACLs“<ref>Andreas Gruenbacher: acl(5). (Manpage) In: Linux man page. die.net, 23. März 2002, abgerufen am 27. März 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „This manual page describes POSIX Access Control Lists…“</ref><ref>Mike Peters: POSIX ACLs in Linux. In: Linux.com. Linux Foundation, 2. August 2004, abgerufen am 27. März 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> eine Erweiterung der klassischen Zugriffssteuerung auf Ebene des Besitzer-Gruppe-Welt-Modells. Auf diese Weise lassen sich Zugriffsrechte spezifisch für einzelne Benutzer zuteilen oder verbieten. Viele Unix-Implementierungen wie z. B. Solaris, IRIX und HP-UX führten Anfang bis Mitte der 1990er Jahre Unterstützung für ein sehr ähnliches, als Erweiterung des klassischen Unix-Zugriffsrechtemodells konzipiertes ACL-Modell ein, und es wurde versucht, dieses ACL-System unter POSIX-1003.1e zu standardisieren. Der dazugehörige Standard-Entwurf (Normen-Entwurf) wurde jedoch im Oktober 1997 zurückgezogen.
Mitte 2000 wurde damit begonnen, POSIX-1003.1e ACLs in FreeBSD und Linux zu implementieren. Inzwischen bieten die meisten Unix-artigen Systeme native Unterstützung für die zurückgezogenen POSIX-1003.1e-ACLs, darunter AIX, HP-UX, Linux, FreeBSD, TrustedBSD, Solaris, Trusted Solaris und IRIX.
Unter Linux unterstützen dabei die Dateisysteme Btrfs, ext-fs (ext2/3/4), JFS, XFS und ReiserFS POSIX-1003.1e ACLs vollständig. Auf der Kommandozeile verwaltet man die ACLs typischerweise mit den Befehlen getfacl und setfacl. Mit der KDE-Version 3.5 steht auch der Dateimanager Konqueror mit nativer POSIX-1003.1e ACL-Unterstützung zur Verfügung. Für die Desktop-Umgebung Gnome beherrscht der Dateimanager Nautilus ab Version 2.16 nativ POSIX-1003.1e ACLs. POSIX-1003.1e ACLs werden in Linux statisch vererbt, d. h. die Berechtigungen pflanzen sich in neu angelegte Unterverzeichnisse und Dateien je nach Bedarf fort. Wird die ACL eines übergeordneten Verzeichnisses geändert, hat dies jedoch keinen Einfluss auf die darunterliegende Struktur.
Mit RFC 3010 (NFSv4)<ref>Vorlage:RFC-Internet</ref> wurde im Dezember 2000 ein neuer auf dem ACL-System des NFS basierender ACL-Standard etabliert. Solaris, AIX und macOS unterstützen mittlerweile diesen Standard. Das Dateisystem ZFS unterstützt ausschließlich NFSv4 ACLs.
Windows
Zum Ändern (englisch ‚change‘ genannt) und Anzeigen der ACLs wurde ab Windows NT 3.5 der (von Cmd unabhängige) Befehl cacls(.exe)<ref>… die Erweiterung hier in Klammern, da diese beim Aufruf nicht zwingend angegeben werden muss …</ref> eingeführt.
Unter Windows NT 4.0 wird jedem Betriebssystemobjekt (Datei, Prozess usw.) ein sogenannter Zugriffskontroll-Deskriptor 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 maximal 1820 Access Control Entries (ACE).<ref>Maximum Number of ACEs in an ACL. in der Microsoft Knowledge Database, 20. September 2003.</ref> Ein ACE enthält jeweils die Information, ob einem Benutzer oder einer Benutzergruppe eine bestimmte Zugriffsart erlaubt (englisch {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) oder verweigert ({{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) 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.
Bei Windows NT bis Version 4.0 werden ACL statisch vererbt, ab Windows 2000 geschieht dies auf Wunsch dynamisch. Wird die ACL eines übergeordneten Verzeichnisses geändert, so hat dies je nach gewählter Vererbung Auswirkungen auf die darunterliegende Verzeichnisstruktur.
Mit Windows Server 2003 wurde der erste cacls-Befehl durch dessen Nachfolger icacls(.exe) ergänzt und damit auch der vorherige Befehl als „veraltet“ bezeichnet.<ref>icacls – bei Microsoft Docs, am 21. August 2018; dort u. a. mit dem Hinweis: „Dieser Befehl ersetzt den veralteten cacls-Befehl.“; das ist auch spätestens (und so wenigstens) mit (einem deutschsprachigen) Windows 7 nachprüfbar, über die eigene Hilfe des cacls-Befehls, welche beispielsweise ausgegeben wird, wenn allein der Befehl (also ohne Übergabewerte) aufgerufen wird; auf einem englischsprachigen Windows wird an der betreffenden Stelle wahrscheinlich deren Wort ‚deprecated‘ genannt</ref> Zudem wurde zuvor, ab Windows 2000, jedoch allein (wahlweise) in den dort sogenannten Support Tools und im Resource Kit enthaltend, der (bisher allein englischsprachige) xcacls-Befehl ergänzt, welcher auch das Ändern des Besitzers (einer Datei oder eines Ordners) beherrscht.<ref>Windows 2000 – Wie die geheimen Support Tools Ihr Leben erleichtern – Windows Tweaks, am 29. November 2013; dort einleitend mit „Seit Windows 2000 finden sich die so genannten Support Tools auf der Original-CD unter Support\Tools.“ und im Folgenden u. a. auch mit ‚xcacls.exe‘</ref><ref>Xcacls Overview. Microsoft Docs, 8. Oktober 2009 (englisch).</ref><ref>XCACLS.exe (NT 4 Resource Kit, Windows XP and 2003). ss64.com (englisch); abgerufen am 16. November 2020. Dort u. a. mit “Take Ownership (Special access)” (wörtlich) übersetzt also: „Eigentum übernehmen (Sonderzugang)“</ref><ref>How to use Xcacls.exe to modify NTFS permissions. it’s notes, blog.cadena-it.com, 22. August 2014 (englisch). Dort u. a. mit “{{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)” (übersetzt: „Das Dienstprogramm Xcacls.exe ist im Windows 2000 Resource Kit enthalten. [Es] ist auch in den Windows Server 2003-Supporttools enthalten.“)</ref>
Andere Systeme
- macOS unterstützt ACLs ab Mac OS X Tiger (10.4, 2005).
- Das Betriebssystem OpenVMS von HP (ursprünglich DEC) unterstützt auch ACLs; deren Einträge heißen ACE.
- Bei Ciscos Betriebssystem IOS bezeichnen ACLs unter anderem Paketfiltereinstellungen.
- Bei einer Reihe von Webanwendungen werden ACLs benutzt, um den Zugriff auf einzelne Seiten oder Bereiche auf bestimmte Benutzer oder Benutzergruppen einzuschränken, so bei einigen Wikis (etwa DokuWiki) und CMS (etwa eZ Publish).
- SAP setzt bei vielen seiner Anwendungen ebenfalls ACLs zur detaillierten Benutzerberechtigung ein, z. B. in der Collaborations-Software cFolders (siehe cProjects) oder dem SAP Easy Document Management.
- Bei einem LDAP-Verzeichnis kann je nach Hersteller eine ACL den Zugriff auf Attribute oder (LDAP-)Container zulassen oder verweigern.
Siehe auch
- Port Based Network Access Control
- Mandatory Access Control
- Role Based Access Control
- Discretionary Access Control
- Informationssicherheit
Weblinks
- ACLbit – ACL Backup and Inspect Tool for Linux. sourceforge.net
- Zur Benutzung von ACLs unter OS X. aplawrence.com (englisch).
- ACL. ubuntuusers.de
- ACL unter Linux. knilse.de
Einzelnachweise
<references />