Access Control Lists ermöglichen ein flexible Rechtevergabe auf Dateisystemen. Das Windows Dateisystem NTFS setzt beispielsweise ACLs ein, um den Zugriff auf Dateien und Ordnern für eine beliebige Menge von Gruppen oder Personen zu erlauben bzw. zu verbieten. Auch in Java sind ACLs als Paket verfügbar und erlauben die Definition von Zugriffsrechten auf Datenstrukturen.
Diese Einführung beschäftigt sich mit dem SunOS-Dateisystem UFS.
Einige weitere Informationen finden sich unter folgenden Links:
Wenn man sich per ls -l eine Dateiliste anzeigen lässt, dann zeigen die ersten Spalten die "normalen" Unix-Rechte. Zuerst kommt der Typ der Datei, dann rwx für den Benutzer, die Gruppe und den Rest. Wenn darauf noch ein "+" folgt hängt an dem entsprechenden Dateiobjekt eine ACL, welche die Rechte feiner definiert. Diese kann man sich mit getfacl <dateiobjekt> anzeigen lassen.
Mit setfacl <option> <acl_entries> <file> können die Rechte modifizert werden. Es gibt folgende Optionen:
Die einzelnen "acl_entries" werden per Komma getrennt. Sie folgen alle dem selben Aufbau: [d:]<type>:<id>:<permissions>
Um beispielsweise ein CVS-Repository in seinem Home-Verzeichnis abzulegen und eine Liste von Benutzern den vollen Zugriff darauf zu gewähren, muß Folgendes getan werden:
/home/girschik $ chmod g+x . /home/girschik $ mkdir cvsrep /home/girschik $ setfacl -s u::rwx,g::---,o:---,m:rwx cvsrep /home/girschik $ setfacl -r -m u:mmerz:rwx cvsrep /home/girschik $ getfacl cvsrep # file: cvsrep # owner: girschik # group: student user::rwx user:mmerz:rwx #effective:--x group::--x #effective:--x mask:--x other:--- /home/girschik $ cvs -d ~girschik/cvsrep init /home/girschik $ cd cvsrep cvsrep $ ls -la total 8 drwx--x---+ 3 girschik student 512 Nov 12 14:09 . drwx--x--- 22 girschik student 1536 Nov 12 14:07 .. drwxrwxr-x 3 girschik student 1024 Nov 12 14:09 CVSROOT cvsrep $ |
home freigeben (kann auch per ACLs gemacht werden) Ordner für Repository anlegen ACL und Maske setzen Benutzer der ACL hinzufügen, Maske neu berechnen Rechte anschauen Repository initialisieren |