1. Einführung in ACL
Stell dir vor, du bist der Veranstalter einer Party (oder der Systemadministrator). Du möchtest, dass Gäste bestimmte Räume betreten dürfen, während andere nur mit deiner Erlaubnis zugänglich sind. Die grundlegenden Zugriffsrechte in Linux rwx erlauben dir, den Zugriff nur für drei Kategorien zu regeln: Besitzer (user), Gruppe (group) und alle anderen (others). Aber was, wenn du einem speziellen Freund Zugang zu einem Raum geben willst? Das Standardmodell für Rechte wird dir sagen: "Hey, das geht so nicht." Genau hier kommen ACL ins Spiel, um dir zu helfen.
ACL (Access Control Lists) lösen das Problem des klassischen dreistufigen Rechtssystems, indem sie es ermöglichen, Zugriffsrechte für spezifische Benutzer und Gruppen zu definieren.
Die Hauptfunktionen von ACL:
- Individuelle Rechte für Dateien und Verzeichnisse für bestimmte Benutzer und Gruppen festlegen.
- Vererbung von Rechten für neue Dateien innerhalb eines Verzeichnisses.
- Flexiblere Konfiguration als der traditionelle Ansatz mit
chmod.
2. Wie prüft man, ob ACL aktiviert ist?
Bevor wir mit der Verwaltung von ACL beginnen, lass uns herausfinden, ob sie von deinem System unterstützt werden. Du kannst das mit folgendem Befehl überprüfen:
mount | grep acl
Wenn das Dateisystem mit der Option acl gemountet wurde, bist du bereit! Andernfalls musst du die Partition neu mounten und acl hinzufügen:
sudo mount -o remount,acl /your/mount/point
Das war's, jetzt bist du bereit. Zeit, in die Praxis einzutauchen.
3. Grundlegende Befehle für die Arbeit mit ACL
| Befehl | Beschreibung |
|---|---|
getfacl |
Liste der aktuellen ACL für eine Datei oder ein Verzeichnis abrufen. |
setfacl |
Eine ACL für eine Datei oder ein Verzeichnis setzen oder ändern. |
setfacl -m |
Zugriffsrechte ändern (modify). |
setfacl -x |
Bestimmte Zugriffsrechte entfernen (remove). |
setfacl -b |
Alle ACL-Einträge für eine Datei oder ein Verzeichnis entfernen. |
setfacl -d |
Standardrechte für ein Verzeichnis setzen, die von Dateien geerbt werden. |
Schauen wir uns diese Befehle jetzt anhand von Beispielen an!
Aktuelle ACL abrufen getfacl
Angenommen, wir haben die Datei example.txt. Wir möchten die aktuellen Zugriffsrechte mit ACL überprüfen. Dazu genügt ein einfacher Befehl:
getfacl example.txt
Die Ausgabe sieht ungefähr so aus:
# file: example.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::---
Diese Liste zeigt die Standardrechte: Der Besitzer user1 kann lesen und schreiben, die Gruppe group1 nur lesen, und alle anderen Benutzer haben keinen Zugriff.
Individuelle Zugriffsrechte setzen (setfacl)
Nehmen wir nun an, dass der Benutzer user2 Schreibrechte für die Datei example.txt benötigt. Dies kann so gemacht werden:
sudo setfacl -m u:user2:rw example.txt
Das bedeutet:
-m: Rechte modifizieren.u:user2:rw: Rechte für Benutzeruser2hinzufügen oder ändern (read-write).
Überprüfen wir das Ergebnis:
getfacl example.txt
Jetzt sieht die Ausgabe so aus:
# file: example.txt
# owner: user1
# group: group1
user::rw-
user:user2:rw # Zusätzliche Regel!
group::r--
other::---
Individuelle Zugriffsrechte entfernen setfacl -x
Wenn du entscheidest, dass der Benutzer user2 keine Schreibrechte mehr haben soll, können die Rechte entfernt werden:
sudo setfacl -x u:user2 example.txt
Überprüfen wir das:
getfacl example.txt
Kein zusätzliches Regelwerk mehr für user2!
Zugriffsrechte für Gruppen setzen
Mit ACL können Rechte nicht nur für einzelne Benutzer, sondern auch für ganze Gruppen gesetzt werden. Zum Beispiel, um der Gruppe devteam Lese- und Schreibzugriff zu gewähren, führen wir aus:
sudo setfacl -m g:devteam:rw example.txt
Standardrechte setzen setfacl -d
Manchmal ist es notwendig, automatisch Rechte für alle neuen Dateien und Verzeichnisse in einem bestimmten Verzeichnis zu setzen. Zum Beispiel möchtest du, dass alle Dateien im Verzeichnis project_dir Schreibrechte für den Benutzer developer haben. In diesem Fall:
sudo setfacl -d -m u:developer:rw project_dir
Überprüfen wir die Rechte so:
getfacl project_dir
Jetzt wird diese Regel standardmäßig auf alle neuen Dateien und Unterverzeichnisse in project_dir angewendet.
Alle ACL entfernen setfacl -b
Wenn du alle ACL für eine Datei komplett löschen möchtest:
sudo setfacl -b example.txt
Jetzt kehrt die Datei zur Standard-Zugriffsmodell user:group:others zurück.
4. Praktische Anwendung von ACL
Szenario: Zusammenarbeit in einem Projekt
Nehmen wir an, du hast ein Projekt, das im Verzeichnis /project gespeichert ist. Drei Personen arbeiten daran:
Alicesollte vollen Zugriff haben (Lesen, Schreiben, Ausführen).Bobsollte nur Dateien lesen können.Evesollte das Verzeichnis überhaupt nicht sehen können.
Das richten wir mit ACL ein:
Alicevollen Zugriff geben:sudo setfacl -m u:alice:rwx /projectBobnur Lesezugriff geben:sudo setfacl -m u:bob:r-- /projectFür
Evemachen wir nichts — sie wird standardmäßig keinen Zugriff haben.
Schauen wir uns die aktuelle ACL-Liste an:
getfacl /project
Ausgabe:
# Datei: /project
# Eigentümer: root
# Gruppe: root
user::rwx
user:alice:rwx
user:bob:r--
group::---
other::---
Jetzt kann Alice uneingeschränkt arbeiten, Bob kann nur die Dateien ansehen, und Eve bleibt außen vor.
5. Mögliche Fehler und ihre Lösungen
ACL funktioniert nicht, obwohl du sie konfiguriert hast. Möglicherweise ist das Laufwerk nicht mit der Option
aclgemountet. Nutzemount, um das zu prüfen, und mounte es bei Bedarf erneut.Konflikt zwischen Standardrechten und ACL. ACL hat immer Vorrang vor den Standardrechten. Zum Beispiel, selbst wenn "others" keinen Lesezugriff haben, kann ACL einem bestimmten Benutzer den Zugriff erlauben.
Vergiss nicht geerbte ACLs. Wenn du
-d(default) Rechte konfiguriert hast, prüfe, ob diese Regeln auf neue Dateien übertragen wurden.
Warum ist das wichtig?
Die Verwaltung von Rechten über ACL ermöglicht dir eine flexible Konfiguration des Zugriffs für unterschiedliche Benutzer und Gruppen. Das ist besonders auf Arbeitsservern nützlich, wo die Rechteverteilung rollenbasiert erfolgen muss. Zum Beispiel werden in Unternehmen ACLs verwendet, um den Zugriff nur denjenigen zu gewähren, die "im Thema" sind — ein Schlüssel zur Sicherheit.
Zusätzlich kannst du das offizielle Handbuch zu ACL studieren, um ihre Möglichkeiten besser zu verstehen.
GO TO FULL VERSION