Table of Contents
Linux Filesystem ACLs und Kommandozeilen Tools
Ein SUPER Tutorial zum Thema Linux ACLs in englischer Sprache ist z.b. http://www.vanemery.com/Linux/ACL/linux-acl.html .
ACHTUNG: FALLSTRICKE
Ändern der User und Gruppenberechtigungen ändert die MASK
Im Dokument http://www.vanemery.com/Linux/ACL/linux-acl.html ist es nur unzureichend Dokumentiert. Aber es wurde festgestellt dass das Ändern von User und Gruppenberechtigungen (Unix Owner User und Unix Owner Gruppe) mit Hilfe des setfacl Kommandos, aber auch beim “chmod” Kommando womöglich ungewollte Auswirkungen auf die ACL MASK haben kann!! Ein “chmod 000 dir” setzt die ACL MASK ebenfalls auf ---. d.H. den vorhandenen ACL Einträgen werden ALLE RECHTE ABERKANNT und effektiv hat danach (bis auf Root) NIEMAND mehr zugriff auf die Dateien. Wenn man das nicht möchte MUSS man anschließend die Maske entsprechend neu auf RWX setzen. Siehe Handhabungs Tabelle am Ende dieser Seite.
Handhabung
Kommandozeile | Bedeutung |
---|---|
getfacl -R Dir > Dir.facl | Schreibt alle aktuellen ACLs des Verzeichnisses DIR und all seiner Unterverzeichnisse in eine Datei “Dir.facl”. |
setfacl --restore Dir.facl | Stellt die in der Datei “Dir.facl” beschriebenen ACLs, Posix-FS Berechtigungen, Owner und Gruppen-Besitzrechte wieder her. ACHTUNG: Das Restore muss von der gleichen Stelle ausgeführt werden von welcher auch die ACLs gesichert wurden da sonst die darin gespeicherten “relativen” Pfade nicht stimmen. |
setfacl -R -m d:g:einegruppe:rwx dir/ | Fügt dem Verzeichniss dir/ sowie allen unterhalb dieses Verzeichnisses liegenden Dateien und Verzeichnisse RWX Rechte für die Gruppe “einegruppe” hinzu. Will man bestimmte Rechte nur auf Files oder nur auf Verzeichnisse setzen, so muss man den Umweg z.b. über das “find” Kommando gehen. |
setfacl -R -x d:g:einegruppe dir/ setfacl -R -x g:4711 dir/ | Löscht den den Default Eintrag der Gruppe einegruppe aus der ACL Liste inkl. aller Dateien und Unterverzeichnisse. einegruppe kann alternativ auch die Numerische Gruppenangabe GID sein! Wichtig ist allerdings in beiden Fällen das beim Löschen von ACL Einträgen KEINE ACL RECHTE (rwx) angegeben wurden, da sonst ein Fehler angezeigt wird. |
find /dir -type d -exec \ setfacl -m d:g:"everyone-zks":rwx,g:"everyone-zks":rwx {} \; | Erstellt für /dir und alle sich darunter befindlichen Verzeichnisse einen zusätzlichen “Default-ACL-Eintrag” sowie einen normalen ACL Eintrag. Dateien sind davon NICHT betroffen. |
getfacl file1 | setfacl --set-file=- file2 | Kopieren einer ACL Liste von Obj.A auf Obj.C Copying the ACL of one file to another |
getfacl --access dir | setfacl -d -M- dir | Copying the access ACL into the Default ACL |
setfacl -R -m default:user::-,default:group::- dirname | Löscht die DEFAULT ACLs für den klassischen Unix User und Unix Group auf NULL. |
setfacl -m mask:rwx dirname | Setzt/Öffnet die ACL Maske zurück auf den Standard-Wert. Die ACL MASKE ist ein “UND Verknüpfter” Rechte-Filter. Sie gibt an WELCHE RECHTE ERLAUBT SIND! d.h. Rechte welche in der Maske nicht gesetzt sind werden den aktuellen ACLs automatisch ENTZOGEN!!!! Daher sollte immer darauf geachtet werden das die Mask RWX enthält, sofern nicht ausdrücklich anders gewünscht. |
— Axel Werner 2011-05-05 21:04