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