ACL – Datei- und Ordnerzugriffe erweitern und einschränken

ACL ist nicht der Präfix eines Vitamin-Getränks sondern heisst in der Computer-Technik Access Control List und regelt die Zugriffsberechtigungen auf Dateien und Ordnerebene. So haben wir die Möglichkeit, bestimmten (Funktions-)Benutzern den Zugriff auf Ressourcen einzuschränken oder zu erweitern. Diese Berechtigungen lassen sich mit chmod (für die Berechtigungsmaske) und chown (zur Definition des Besitzers bzw. der besitzenden Gruppe) für den Besitzer, die primäre Gruppe und allen anderen Benutzern der jeweiligen Datei bzw. des jeweiligen Ordners setzen. Wie sich diese Berechtigungen nun auch für einzelne Benutzer ausweiten oder einschränken lassen, wird im nachfolgenden Beitrag beschrieben.

ACL aktivieren / deaktivieren

Wie eingangs erwähnt gibt es neben den gängigen Vertretern chmod und chown noch die Möglichkeit, einzelnen Benutzern und Gruppen unabhängig davon Berechtigungen zu vergeben. Das kann besonders praktisch sein, falls z.B. einzelne Benutzer von bestimmten Bereichen im Dateisystem ausgeschlossen bleiben sollen.
Das Tool unserer Wahl heisst setfacl und sollte bei jeder Standardinstallation bereits enthalten sein. Sollte dem nicht so sein, kann die Installation folgendermaßen nachgeholt werden:

sudo apt-get install acl

ACL ist eine Funktion, die in modernen Linux Distributionen für die Dateisysteme bereits von Haus aktiviert sein sollte.
Überprüfen lässt sich dies mit dem Befehl …

sudo tune2fs -l /dev/sdaX

(Ergänzt den Pfad zur Partition entsprechend dem eures Wertes)
In der nachfolgenden Auflistung sollte die Zeile …

Default mount options: acl

… erscheinen. Falls acl nicht als Wert angegeben ist, kann dieses Feature in den Optionen in der /etc/fstab oder über die Kommandozeile nachträglich angegeben werden.
Das kann über die fstab-Datei beispielsweise folgendermaßen aussehen:

sudo nano /etc/fstab

### Eintrag innerhalb der /etc/fstab
/dev/sda1    /    ext4    defaults,acl    0    1

Ein anschließender remount des Dateisystems (oder kompletter Neustart des Systems, falls es sich um die /-Partition handelt) ist erforderlich.

Hinweis: Alternativ lässt sich auch ein noacl setzen, um die ACL-Funktionalität zu unterbinden.

Einfacher lässt sich diese Option direkt über einen Befehl in der Kommandozeile setzen …

sudo tune2fs -o acl /dev/sda1

… oder auch wieder entfernen:

sudo tune2fs -o ^acl /dev/sda1

Setzen und löschen von ACLs

ACLs lassen sich mit dem Befehl setfacl setzen. Dies ist für Benutzer sowie für Gruppen möglich. Um beispielsweise dem Benutzer urmel Lese- und Ausführrechte und der Gruppe mainecoon Lese- und Schreibrechte auf die Datei kratzbaum.txt zu geben, benutzen wir den Parameter -m:

sudo setfacl -m u:urmel:rx,g:mainecoon:rw kratzbaum.txt

Die Syntax sieht vor, den Benutzer mit einem u bzw. einem g für die Gruppe anzugeben, gefolgt von einem Doppelpunkt und den entsprechenden Namen des Benutzers bzw. der Gruppe und nach einem weiteren Doppelpunkt die Berechtigungs-Bits zu setzen, also die zum Lesen, Schreiben oder Ausführen (es ist auch möglich ein anzugeben, um den Zugriff komplett zu verweigern). Als letztes wird die Datei oder der Ordner benannt, auf dem diese Änderungen angewendet werden sollen. Wie in diesem Beispiel zu sehen ist, ist es auch möglich, mehrere Benutzer oder Gruppen in nur einem Befehl zu benennen. Die Benutzer oder Gruppen werden dann durch ein Kommata getrennt.
Die gesetzten ACLs lassen sich mit dem Befehl getfacl einsehen:

sudo getfacl kratzbaum.txt

Die Auflistung gibt Aufschluss über die derzeit gesetzten Berechtigungen. Neben dem Besitzer und der primären Gruppe, sehen wir die Berechtigungsmaske für user (der Besitzer der Datei), group (die Mitglieder dieser primären Gruppe) und other (alle anderen Benutzer) sowie für den neu hinzugekommenen Benutzer urmel und der Gruppe mainecoon durch die ACL.
Die Reihenfolge der Auflistung ist dabei von entscheidender Bedeutung. Diese gibt an, in welcher Priorität die Berechtigungen greifen. Die ACL Regeln werden nämlich von oben nach unten abgearbeitet, sodass die erste zutreffende Regel gilt.
Neben getfacl gibt uns auch das ls Kommando einen Hinweis darauf, ob eine ACL angewendet wurde:

ls -la /opt/

Eine mit ACL Regeln bestückte Datei macht sich durch ein + Symbol hinter der Berechtigungsmaske bemerkbar.
Mit der gleichen Art und Weise lassen sich auch die ACLs von Ordnern anpassen:

sudo setfacl -m u:urmel:rwx /opt/

Soll dies auf gleich alle Dateien und Ordner innerhalb eines Ordners angewendet werden, hilft der -R Parameter:

sudo setfacl -R -m u:urmel:rwx /opt/

Diese Sonderrechte lassen sich auch leicht wieder entfernen. Das -m wird dabei lediglich durch ein -x getauscht:

sudo setfacl -x u:urmel,g:mainecoon kratzbaum.txt

Die Angabe der Berechtigungsbits ist diesmal nicht erforderlich. Mit getfacl kann auch dieser Vorgang überprüft werden:

Fazit

Bei den Zuweisungen von Berechtigungen ist man mit chmod und chown bereits gut bedient. setfacl geht dabei jedoch noch einen Schritt weiter und kann gerade auf sensiblen Systemen für die extra Portion Sicherheit sorgen und wichtige Daten vor unerwünschten Zugriffen schützen.

Bildquellen:
Clker-Free-Vector-Images auf Pixabay
OpenClipart-Vectors auf Pixabay
Clker-Free-Vector-Images auf Pixabay
OpenClipart-Vectors auf Pixabay
Jan auf Pixabay

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen