Erweiterte Dateiattribute unter UCS und Samba

In Dateisystemen unter Linux können nur die Standard-Rechte “Lesen”, “Schreiben” und “Ausführen” für den Eigentümer einer Datei oder eines Verzeichnisses, eine Gruppe und alle anderen gesetzt werden. Dieses Konzept unterstützt nur einen eingeschränkten Umfang an Berechtigungen. Mit erweiterten Dateiattributen unter Linux (extended file access control lists - ACLs) können deutlich flexiblere Berechtigungen vergeben werden. Darüberhinaus erlauben erweiterte Dateiattribute die Abbildung von Windows NT ACLs auf Samba-Freigaben. Da die unter Linux verwendeten POSIX ACLs nicht den vollen Umfang der unter Windows verwendeten NT ACLs unterstützen, können nicht alle Berechtigungen auf Dateien in Samba Freigaben vergeben werden. Aus diesem Grund werden bisher die so genannten “Speziellen Berechtigungen” (z.B. “Attribute lesen”, “Löschen” oder “Besitzrechte übernehmen”) von Samba nicht unterstützt.

In UCS unterstützen die Dateisysteme XFS und EXT3 erweiterte Dateiattribute, auf anderen Dateisystemen können die folgend beschriebenen Einstellungen nicht ohne eigene Anpassungen vorgenommen werden.

Unter Linux werden über ‘ls -l’ die Standard-Rechte einer Datei angezeigt. Sind erweiterte Attribute gesetzt, findet sich in der Ausgabe ein “+” hinter den Standard-Rechten:

root@ucsmaster:/home/groups/freigaben/austausch# ls -la   
 total 16   
 drwxrwx---+  4 root Domain Users    29 Aug 30 21:53 .   
 drwxr-sr-x  26 root root   4096 Aug 30 21:59 ..   
 drwxrwx---+  2 root vertrieb    6 Aug 30 21:53 Standarddokumente   
 drwxrwx---+  2 root vertrieb    6 Aug 30 21:53 Kalkulation   

Sowohl für das aktuelle Verzeichnis (".") als auch für die Unterverzeichnisse Standarddokumente" und “Kalkulation” sind erweiterte Attribute gesetzt, nicht aber für das übergeordnete Verzeichnis ("…").

Über den Befehl ‘getfacl’ können die erweiterten Attribute angezeigt werden. Der Befehl ist in der entsprechenden Man-Page dokumentiert (‘man getfacl’). Für das Verzeichnis “Kalkulation”:

root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation   
 # file: Kalkulation   
 # owner: root   
 # group: vertrieb   
 user::rwx   
 user:controller:r-x   
 group::---   
 group:controlling:rwx   
 group:management:r-x   
 mask::rwx   
 other::---   
 default:user::rwx   
 default:group::r-x   
 default:group:controlling:r-x   
 default:mask::r-x   
 default:other::r-x  

In der Ausgabe werden erst die gesetzten Rechte für Benutzer (“user:”), Gruppen (“group:”), alle anderen (“other:”) gefolgt von den default-Rechten aufgeführt.

Die erste user-Zeile “user::rwx” bezieht sich auf den Besitzer, der auch in der Ausgabe von ‘ls -l’ angezeigt wurde, hier “root”. Die erste mit “group:” beginnende Zeile bezieht sich auf die in den Standard-Rechten aufgeführte Gruppe (“vertrieb”). Es werden weiterhin zusätzliche Benutzer aufgelistet, hier der Benutzer “controller” mit Leserechten und weitere Gruppen, hier “controlling” mit Schreibzugriff und “management” mit Lesezugriff.

Berechtigungen für alle anderen Benutzer werden über “other:” angegeben. Diese Berechtigungen werden verwendet, wenn ein Benutzer, der auf die Dateien oder Verzeichnisse zugreift, nicht namentlich aufgeführt und nicht Mitglied in einer der angegebenen Gruppen ist.

Die bisher beschriebenen Rechte werden auch unter Windows dargestellt.

Darüberhinaus gibt es noch den Eintrag “mask:”, der die maximalen Zugriffsrechte für alle definiert. Werden über “mask:” Einstellungen die Schreibzugriffe deaktiviert, könnte niemand mehr schreibend auf Dateien/Verzeichnisse zugreifen, auch wenn explizit für Benutzer oder Gruppen andere Rechte gesetzt sind. Die Mask-Einstellung entspricht den Berechtigungen, die in der Ausgabe von ‘ls -l’ am Verzeichnis für die Gruppe gesetzt ist (s.u.).

Die mit “default:” beginnenden Berechtigungen werden gesetzt, wenn in einem Verzeichnis neue Dateien oder Verzeichnisse angelegt werden. Wird beispielsweise im Verzeichnis “Kalkulation” ein weiteres Unterverzeichnis angelegt, werden automatisch für den Eigentümer Schreibrechte, für die primäre Gruppe des Eigentümers Leserechte und für die Gruppe “controlling” Leserechte gesetzt. Hier ist zu beachten, dass in Univention Admin gesetzte Samba-Optionen beim Zugriff über Windows Vorrang haben.

Um erweiterte Attribute zu setzen oder zu entfernen, kann der Befehl ‘setfacl’ verwendet werden. Der Befehl ist in der entsprechenden Man-Page dokumentiert (‘man setfacl’). Zum Erweitern einer bestehenden ACL wird setfacl mit dem Parameter -m (modify) unter Angabe der entsprechenden Berechtigung (:[]:) aufgerufen. Default-Berechtigungen können nur an Verzeichnissen gesetzt werden. Um Berechtigungen zu entziehen, kann der Parameter -x ": verwendet werden:

root@ucsmaster:/home/groups/freigaben/austausch# setfacl -m user:fibu:rwx  
Kalkulation  
root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation   
 # file: Kalkulation   
 # owner: root   
 # group: vertrieb   
 user::rwx   
 user:controller:r-x  
 user:fibu:rwx   
 group::---   
 group:controlling:rwx   
 group:management:r-x   
 mask::rwx   
 other::---   
 default:user::rwx   
 default:group::r-x   
 default:group:controlling:r-x   
 default:mask::r-x   
 default:other::r-x  
root@ucsmaster:/home/groups/freigaben/austausch# setfacl -x user:fibu  
root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation   
 # file: Kalkulation   
 # owner: root   
 # group: vertrieb   
 user::rwx   
 user:controller:r-x  
 group::---   
 group:controlling:rwx   
 group:management:r-x   
 mask::rwx   
 other::---   
 default:user::rwx   
 default:group::r-x   
 default:group:controlling:r-x   
 default:mask::r-x   

Am Windows-Client werden Berechtigungen über den Eigenschaften-Dialog von Dateien oder Verzeichnissen vergeben:

Bei der Verwendung von erweiterten Attributen sollte darauf geachtet werden, dass nicht nur über setfacl Berechtigungen verändert werden. Wird über den Befehl ‘chmod’ die Berechtigung für die Gruppe verändert, wirkt sich das auf die “mask:” Einstellung aus. Über “mask:” Einstellungen können also explizit gesetzte Berechtigungen außer Kraft gesetzt werden, obwohl sie in der Ausgabe von ‘getfacl’ aufgeführt werden. Die tatsächlichen Berechtigungen werden allerdings zusätzlich als “effective” angezeigt:

root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation.xls
# file: home/groups/freigaben/austausch/Kalkulation.xls
# owner: lars
# group: Domain\040Users
user::rwx
group::r--
group:controlling:rwx           #effective:r-x
mask::r-x
other::r--

Alternativ kann getfacl mit dem Parameter --tabular aufgerufen werden. Bei Verwendung dieses Parameters werden Rechte, die durch die “mask:” Einstellung außer Kraft gesetzt sind, in Großbuchstaben angezeigt:

# root@ucsmaster:/home/groups/freigaben/austausch# getfacl --tabular Kalkulation.xls
getfacl: Removing leading '/' from absolute path names
# file: home/groups/freigaben/austausch/Kalkulation.xls
USER   lars             rwx
GROUP  Domain\040Users  r--
group  controlling      rWx
mask                    r-x
other                   r--

Am Verzeichnis Kalkulation sind die Standard-Rechte rwx für die Gruppe gesetzt:

root@ucsmaster:/home/groups/freigaben/austausch# ls -ld Kalkulation  
 drwxrwx---+  2 root vertrieb    6 Aug 30 21:53 Kalkulation  

Die “mask:” Einstellung ist an diesem Verzeichnis auf ‘rwx’ gesetzt, die Gruppen haben folgende Berechtigungen:

root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation  
[...]  
 group::---   
 group:controlling:rwx   
 group:management:r-x   
 mask::rwx  
[...]  

Wird über chmod die Gruppenberechtigung verändert, z.B. auf Leseberechtigung, wird die Mask-Einstellung entsprechend angepasst:

root@ucsmaster:/home/groups/freigaben/austausch# chmod g-w Kalkulation  
root@ucsmaster:/home/groups/freigaben/austausch# getfacl Kalkulation  
[...]  
 group::---   
 group:controlling:rwx             #effective:r-x
 group:management:r-x   
 mask::r-x  
[...]  

Die Gruppenberechtigungen ändern sich in der Darstellung nicht. Die veränderte Mask-Einstellung bewirkt aber, dass die Schreibberechtigung bei jedem Zugriff auf das Verzeichnis entzogen wird, die effektive Berechtigung wurde verändert.

Beim Kopieren von Dateien mit erweiterten Attributen unter UCS ist darauf zu achten, dass der Parameter ‘-p’ (preserve Ownership – Besitzrechte bewahren) beim Aufruf von ‘cp’ anzugeben ist. Nur unter Angabe dieses Parameters werden an einer Datei gesetzte erweiterte Attribute mit kopiert, anderenfalls gehen sie verloren. Beim Kopieren von Dateien am Windows-Client werden Zugriffsberechtigungen nur dann übernommen, wenn das Programm robocopy verwendet wird (enthalten im Resource Kit von Windows NT4.0, Windows 2000 Server oder Windows 2003 Server).

Mastodon