Zugriffsverwaltung mit ACL setfacl
, getfacl
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 Benutzeruser2
hinzufü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:
Alice
sollte vollen Zugriff haben (Lesen, Schreiben, Ausführen).Bob
sollte nur Dateien lesen können.Eve
sollte das Verzeichnis überhaupt nicht sehen können.
Das richten wir mit ACL ein:
Alice
vollen Zugriff geben:sudo setfacl -m u:alice:rwx /project
Bob
nur Lesezugriff geben:sudo setfacl -m u:bob:r-- /project
Für
Eve
machen 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
acl
gemountet. 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