skip to main contentskip to main menuskip to footer Universität Bielefeld Play Search

Shared Folders

Campus der Universität Bielefeld
© Universität Bielefeld

Shared web folders

With ACLs (Access Control Lists) one can control the access rights individually for each file or folder. For NFS4-mounted file systems, such as web pages mounted from www.math.uni-bielefeld.de, this can be done with the commands nfs4_getfacl (checking the current rights) and nfs4_setfacl (setting/changing the rights).

$> nfs4_getfacl /vol/www/$USER
A::OWNER@:rwaDxtTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

These are the standard rights for folders on the web server. The owner has all rights, the others can only read what rights they (don't) have. The exact meaning of these right can be found with the command

man nfs4_acl

Typical application: A group web page

A group web page in folder /vol/www/user/UserX/grpweb shall be readable by the web server, and all members of the group wwwadmin shall have full access rights:

cd /vol/www/user/UserX
nfs4_setfacl -a A::www-data@math.uni-bielefeld.de:RX grpweb
nfs4_setfacl -a A:fdi:www-data@math.uni-bielefeld.de:RX grpweb
nfs4_setfacl -a A:g:wwwadmin@math.uni-bielefeld.de:RWX grpweb
nfs4_setfacl -a A:gfdi:wwwadmin@math.uni-bielefeld.de:RWX grpweb
chmod -R g+rwX grpweb
chmod go+x /vol/www/user/UserX
# check the result
nfs4_getfacl grpweb

Unfortunately, recursive setting of ACLs does not work properly on the web server. It is recommended to first prepare an empty folder with the required ACLs, and only then fill it with contents. The new files will inherit the ACLs from their parent folder. However, for each new file or folder, all group rights must be turned on, because the effective access rights are thoese of the ACLs, intersected with the Unix group access rights. The is best achieved recursively with the command

chmod -R g+rwX grpweb

Explanations

  • Die Rechte R, W und X sind Aliase, die für Rechtegruppen stehen, welche im Wesentlichen den Unix Lese-, Schreib- und Ausführ- bzw. Durchsuch-Rechten entsprechen. Man kann die Rechte auch feiner aufspalten, aber davon sei dem Anfänger abgeraten.
  • Rechte werden an sogenannte Principals vergeben. Das sind einerseits OWNER@ (der Besitzer der Datei), GROUP@ (die Gruppe, zu der die Datei gehört), EVERYONE@ (alle), sowie weitere benannte User und Gruppen, die in der Form some_user@math.uni-bielelfeld.de, bzw. some_group@math.uni-bielefeld.de angegeben werden. Diese benannten User und Gruppen sind unabhängig von Datei-Besitzer und Datei-Gruppe, und sollten bevorzugt genutzt werden.
  • Die Option -R sorgt dafür, dass die Einstellungen rekursiv für den ganzen Baum gemacht werden. Die Rekursion funktioniert leider nicht richtig auf dem Webserver.
  • Die Option -a fügt die Rechte hinzu; analog kann man mit -x die Sonderrechte für den User2 (oder eine Gruppe) wieder entfernen:
    nfs4_setfacl -R -x A::User2@math.uni-bielefeld.de:rwatcy ~/ProjektX
    
    Dabei müssen die angegebenen Rechte aber genau mit den vergebenen übereinstimmen, und sind für Dateien und Ordner verschieden (mit nfs4_getfacl auslesen!). Behelfsweise reicht es auch, die Sonderrechte für den User2 vom Wurzelordner zu entfernen - dann kommt er auch nicht mehr an die untergeordneten Dateien heran.

    Praktisch ist es dabei auch, nfs4_setfacl mit einem Editor aufzurufen:

    nfs4_setfacl -e ~/ProjektX
    
    Dann kann man die nicht mehr gewünschten Zeilen mit User2 einfach löschen und die geänderten Rechte abspeichern. Ergebnis mit nfs4_getfacl überprüfen!
  • Die Flags fdi sorgen dafür, dass die Einstellungen an neu angelegte Dateien (f) und Unterordner (d) vererbt werden. Das Flag i sorgt dafür, dass auch die Vererbungsflags vererbt werden. Falls Ordner beteiligt sind, muss man jeden Befehl zweimal ausführen, einmal ohne Vererbungsflags (setzt die eigentlichen Rechte) und einmal mit Vererbungsflags (setzt die Vererbung). Die Vererbung von ACLs funktioniert leider nicht mehr auf dem BITS-Filer, sodass dort auch keine Vererbungsflags gesetzt werden müssen.
  • Das Flag g zeigt an, dass das folgende Prinzipal, für das Rechte gesetzt werden sollen, eine Unix-Gruppe, und nicht einenen einzelnen User bezeichnet
  • Wichtig: es gibt einen signifikanten Unterschied im Verhalten des BITS-Filers (/homes, /vol/data) einerseits, und des Webservers andererseits. Auf dem BITS-Filer geben sowohl Unix-Dateirechte wie auch ACLs direkt Zugriff. Man sollte deshalb die Unix-Dateirechte auf der Standardeinstellung (Rechte nur für den Besitzer) belassen, und alle Zugriffsrechte und Vererbungsregeln über ACLs regeln, auch jene für den Dateibesitzer. Insbesondere sollten auch für die Rechte des Besitzers Vererbungsflags gesetzt werden. Achtung: Neu angelegte Dateien auf dem BITS-Filer erben ihre ACLs leider nicht mehr. Man muss sie explizit setzen wie in Beispiel 1 oben.

    Auf dem Webserver dagegen entsprechen die effektiven Zugriffsrechte für andere User als den Besitzer dem Durchschnitt der Rechte aus den ACLs und den Unix-Dateirechten für die Gruppe. Aus diesem Grund müssen mit dem Befehl chmod -R g+rwX auch Gruppenrechte vergeben werden. Dies sorgt dafür, dass alle Ordner und Dateien im Teilbaum Lese-, Schreib- und - soweit sinnvoll - Ausführ- bzw. Durchsuchrechte für die Gruppe bekommen (das große X sorgt dafür, dass das Gruppen-x-Bit nur für Dateien gesetzt wird, die schon ein x-Bit haben). Auf dem neuen Filer dagegen darf man gerade das nicht machen, weil sonst die ganze Gruppe vollen Schreibzugriff bekäme. Achtung: Die Unix-Gruppenrechte müssen für neu angelegte Dateien und Ordner von Hand gesetzt werden (oder rekursiv für den ganzen Baum). Leider werden sie nicht vererbt.

  • Wichtig: nach dem Ändern von ACLs immer mit prüfen, ob man das gewünschten Ergebnis erzielt hat.
  • Weitere (alle) Details findet man mit:
    man nfs4_acl
    man nfs4_getfacl
    man nfs4_setfacl
    
back to top