linux-security security permissions acl getfacl setfacl administration

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 chown Orgien 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