CodeGym /Kurse /Docker SELF /Zugriffsverwaltung mit ACL (`setfacl`, `getfacl`)

Zugriffsverwaltung mit ACL (`setfacl`, `getfacl`)

Docker SELF
Level 5 , Lektion 3
Verfügbar

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:

  1. Individuelle Rechte für Dateien und Verzeichnisse für bestimmte Benutzer und Gruppen festlegen.
  2. Vererbung von Rechten für neue Dateien innerhalb eines Verzeichnisses.
  3. 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 Benutzer user2 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:

  1. Alice vollen Zugriff geben:

    sudo setfacl -m u:alice:rwx /project
    
  2. Bob nur Lesezugriff geben:

    sudo setfacl -m u:bob:r-- /project
    
  3. 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

  1. ACL funktioniert nicht, obwohl du sie konfiguriert hast. Möglicherweise ist das Laufwerk nicht mit der Option acl gemountet. Nutze mount, um das zu prüfen, und mounte es bei Bedarf erneut.

  2. 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.

  3. 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.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION