ACLs: Advanced Access Control Lists (Artikel 314)
Beherrschung von Access Control Lists (ACLs) unter Linux. Erfahren Sie, wie Sie Berechtigungen für mehrere Benutzer und Gruppen pro Datei vergeben und Vererbung mittels Default-ACLs steuern.
# ACL Mastery: Granulare Berechtigungen jenseits von UGO
TL;DR / Management Summary Das klassische Linux-Modell (User, Group, Others) stößt in Enterprise-Umgebungen schnell an seine Grenzen. Was, wenn drei verschiedene Gruppen Zugriff auf denselben Ordner brauchen? ACLs (Access Control Lists) lösen dieses Problem. Sie erlauben es, beliebig vielen Benutzern und Gruppen individuelle Rechte für eine einzelne Datei oder ein Verzeichnis zuzuweisen. Ein Senior Admin nutzt ACLs, um komplexe Team-Berechtigungen abzubilden, ohne den Besitzer der Datei ändern zu müssen.
# 1. Einführung & Architektur
Die Erweiterung des Standards.
ACLs werden in den Metadaten des Dateisystems (XFS, Ext4, Btrfs) gespeichert. Sie ergänzen das UGO-Modell, überschreiben es aber nicht.
# Die Berechtigungs-Ebenen (Mermaid)
graph TD
A[Access Request] --> B{Kernel Check}
B -->|1. Standard UGO| C[Check Owner / Mode]
C -->|No Match| D{2. POSIX ACLs}
D -->|Match User| E[Allow / Deny]
D -->|Match Group| E
D -->|No Match| F[3. Others / World]
F --> E
# 2. Abfrage und Setzen von ACLs
Die Werkzeuge.
# ACLs anzeigen (getfacl)
getfacl /data/projects
Wenn in ls -l ein + am Ende der Berechtigungen steht (z.B. drwxr-xr-x+), sind ACLs aktiv.
# ACLs setzen (setfacl)
Geben Sie dem User johndoe Schreibrechte auf eine Datei, die root gehört:
# -m: Modify, u: User
sudo setfacl -m u:johndoe:rw /var/log/custom.log
Geben Sie einer zusätzlichen Gruppe Leserechte:
# g: Group
sudo setfacl -m g:marketing:r /data/stats.csv
# 3. Vererbung: Default-ACLs
Vorausschauendes Management.
Das größte Problem bei ACLs: Neue Dateien erben normalerweise nicht die ACLs des Ordners. Dafür brauchen wir Default-ACLs.
# -d: Default (gilt für alle zukünftigen Dateien im Ordner)
sudo setfacl -d -m g:developers:rwx /data/source_code
Ab jetzt erhält jede neue Datei in /data/source_code automatisch Zugriff für die Gruppe developers.
# 4. Day-2 Operations: ACLs entfernen
Aufräumen.
# Einzelne Regel löschen
sudo setfacl -x u:johndoe /data/file
# Alle ACLs entfernen
sudo setfacl -b /data/file
# 5. Troubleshooting & “War Stories”
Wenn die Maske alles blockiert.
# Story 1: “Das Masken-Rätsel”
Symptom: Der Admin setzt setfacl -m u:user:rwx, aber der User hat trotzdem nur Leserechte. getfacl zeigt effective: r--.
Ursache: Die ACL-Maske limitiert die maximalen Rechte aller ACL-Einträge. Wenn die Maske auf r-- steht, nützt auch ein rwx Eintrag nichts.
Lösung: Aktualisieren Sie die Maske:
sudo setfacl -m m:rwx /data/file.
# Story 2: “Der Backup-Verlust”
Symptom: Nach einem Server-Umzug (Dateien via cp kopiert) funktionieren die Team-Berechtigungen nicht mehr.
Ursache: Standard-Kopierbefehle ignorieren ACL-Metadaten.
Lösung: Nutzen Sie beim Kopieren oder Sichern immer Flags für Extended Attributes:
cp -a oder rsync -A.
# 6. Fazit & Empfehlung
- Wahl: Nutzen Sie ACLs nur, wenn das UGO-Modell (Artikel 283) wirklich nicht ausreicht. Zu viele ACLs machen das System unübersichtlich.
- Wartung: Nutzen Sie Default-ACLs für Shared-Verzeichnisse, um manuelle
chownOrgien zu vermeiden. - Performance: ACLs haben einen minimalen Einfluss auf die I/O-Performance – in modernen Systemen ist dies vernachlässigbar.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| ACL sehen | getfacl <file> |
| User hinzufügen | setfacl -m u:<user>:<perms> <file> |
| Gruppe hinzufügen | setfacl -m g:<group>:<perms> <file> |
| Default ACL setzen | setfacl -d -m ... |
| ACL entfernen | setfacl -x ... |
| Alle ACLs löschen | setfacl -b ... |
| Rekursiv anwenden | setfacl -R ... |
| ACLs in Datei sichern | getfacl -R /data > permissions.bak |
| ACLs aus Datei laden | setfacl --restore=permissions.bak |