Wer hat Recht?

Im Laufe des Projekts muss Alice kurzzeitig auch den restlichen Mitgliedern aus Bobs Gruppe Einblick in ihren Kalender gewähren. Also fügt sie kurzerhand einen entsprechenden Eintrag für das »bteam« hinzu:

setfacl -m group:bteam:r-- kalender.cal
$ getfacl kalender.cal
# file: kalender.cal
# owner: alice
# group: ateam
user::rw-
user:bob:rw-
group::r--
group:bteam:r--
mask::rw--
other::r--

Bei einem Lesezugriff auf eine Datei klopft Linux die Rechte nacheinander ab. Als erstes prüft der Kernel, ob der Benutzer einen eigenen Eintrag besitzt. Wenn ja, zieht Linux die dort hinterlegten Rechte heran. Im Beispiel erhielte Bob auf diese Weise lesenden und schreibenden Zugriff auf den Kalender. Für Carl fehlt hingegen ein solcher persönlicher Eintrag. Deshalb schaut Linux als nächstes bei den Gruppen nach. Da Carl zum »bteam« gehört, darf er lesend zugreifen. Bei den Damen aus der Buchhaltung findet der Kernel weder einen persönlichen Eintrag, noch eine passende Gruppe. In diesen Fällen gelten die gelten die Standard-Unix-Rechte.

Altlasten

Die zusätzlichen Rechte zeigt »ls -l« leider nicht an. Stattdessen weist ein einsames Pluszeichen auf die Existenz von erweiterten Zugriffsrechten hin:

$ ls -l kalender.cal
-rw-r--r--+ 1 alice ateam 5410 7. Feb ↩
11:21 kalender.cal

Da die ACLs die Standard Unix-Rechte abbilden, ersetzt »setfacl« auch das gute alte »chmod« . Man muss lediglich die entsprechenden Einträge ändern. So gibt der Befehl

setfacl -m other::rw- kalender.cal

auch allen anderen Benutzern, wie beispielsweise der Buchhaltung, Schreib- und Lesezugriff auf die Datei:

-rw-r--rw-+ 1 alice ateam 5410 7. ↩
Feb 11:21 kalender.cal

Setfacl unter der Lupe

»setfacl« kennt folgende nützliche Parameter: »-m« ändert (Modify) oder erstellt einen neuen Eintrag:

setfacl -m user:bob:r-- kalender.cal

den »-x« wieder löscht:

setfacl -x user:bob kalender.cal

Dies entfernt nur den angegebenen Eintrag, die Gruppe, in der sich Bob befindet, bleibt beispielsweise unberührt. »--set« entfernt alle bisherigen Einträge und setzt nur noch den neuen:

setfacl --set user:bob:r-- kalender.cal

Die Option »-b« schließlich leert die ganze Liste. Mit dem zusätzlichen Parameter »-R« arbeitet sich »setfacl« sogar rekursiv durch den Verzeichnisbaum. Mehrere Zugriffsrechte auf einmal darf man ebenfalls setzten, vorausgesetzt man trennt sie jeweils durch ein Komma:

setfacl -m user:bob:r--, group:cteam:rw- kalender.cal

Anstelle der Benutzer- und Gruppennamen kann man alternativ die UIDs und GIDs heranziehen, die Rechte nimmt »setfacl« auch in nummerischer Form entgegen.

Für Schreibfaule kennt »setfacl« noch ein paar Abkürzungen. So darf man anstelle von »user« auch kurz »u« verwenden. Analog gelten die Verkürzungen »g« (roup), »m« (ask), »o« (ther) und »d« (efault). Weiterhin darf man mehrere, aufeinanderfolgende Striche bei den Rechten über Bord werfen, sofern dadurch keine Missverständnisse entstehen:

setfacl -m u:bob:r- kalender.cal
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023