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