Bei ext4 und xfs sind ACLs per default aktiviert
Für ext[234] default Mount-Optionen auslesen:
tune2fs -l /dev/sdXX | grep '^Default mount options'
setfacl -m "d:u::rwx,d:g::rwx,d:o::-" projekte2/
Alternative Syntax
setfacl -d -m "u::rwx,g::rwx,o::-" projekte2/
setzt die default-mask auf ug=rwx,o= unter Umgehung der umask
Michelle darf alles hier:
setfacl -m 'u:michelle:rwx' projekte2/ getfacl projekte2/
Michelles Rechte werden weitergegeben bei Neuanlage von Dateiobjekten
setfacl -d -m 'u:michelle:rwx' projekte2/
groupadd group1 groupadd group2 groupadd group3
useradd -m -s /bin/bash test1 -G group1,group2,group3 useradd -m -s /bin/bash test2 -G group1,group2 useradd -m -s /bin/bash test3 -G group1
touch /tmp/acltest chown test1:group3 /tmp/acltest chmod ug=rw,o= /tmp/acltest setfacl -m g:group2:r,g:group1:w /tmp/acltest
| lesen? | schreiben? | |
|---|---|---|
| test1 | _ | _ |
| test2 | _ | _ |
| test3 | _ | _ |
setfacl -m m:r-- /tmp/acltest
| lesen? | schreiben? | |
|---|---|---|
| test1 | _ | _ |
| test2 | _ | _ |
| test3 | _ | _ |
setfacl -m g:group3:- /tmp/acltest
| lesen? | schreiben? | |
|---|---|---|
| test1 | _ | _ |
getfacl --recursive --skip-base startVerzeichnis | awk '/^# file:/ { print substr($0, 9) }'
--recursive oder -R arbeitet rekursiv, --skip-base oder -s lässt Dateien weg, die lediglich die Standardeinträge haben (von chmod).
ACLs werden grundsätzlich in zwei Klassen eingeteilt. Eine minimale ACL besteht ausschließlich aus den Einträgen vom Typ owner (Besitzer), owning group (Besitzergruppe) und other (Andere), und entspricht den herkömmlichen Berechtigungsbits für Dateien und Verzeichnisse. Eine erweiterte (engl. extended) ACL geht über dieses Konzept hinaus. Sie muss einen mask (Maske) Eintrag enthalten und darf mehrere Einträge des Typs named user (namentlich gekennzeichneter Benutzer) und named group (namentlich gekennzeichnete Gruppe) enthalten. Die Tabelle fasst die verschiedenen verfügbaren Typen von ACL-Einträgen zusammen:
| Typ | Textform |
|---|---|
| owner | user::rwx |
| named user | user:name:rwx |
| owning group | group::rwx |
| named group | group:name:rwx |
| mask | mask::rwx |
| other | other::rwx |
In den Einträgen owner und other festgelegte Rechte sind immer wirksam. Vom mask Eintrag abgesehen, können alle übrigen Einträge (named user, owning group und named group) entweder wirksam oder maskiert werden. Sind Rechte sowohl in einem der oben genannten Einträge als auch in der Maske vorhanden, werden sie wirksam. Rechte, die nur in der Maske oder nur im eigentlichen Eintrag vorhanden sind, sind nicht wirksam.
| Typ | Textform | Rechte |
|---|---|---|
| named user | user:jane:r-x | r-x |
| mask | mask::rw- | rw- |
| Wirksame Berechtigungen: | r– |
Grundsätzlich werden ACL-Einträge in folgender Reihenfolge untersucht: owner, named user, owning group oder named group und other. Über den Eintrag, der am besten auf den Prozess passt, wird schließlich der Zugang geregelt. Komplizierter werden die Verhältnisse, wenn ein Prozess zu mehr als einer Gruppe gehört, also potenziell auch mehrere group Einträge passen könnten. Aus den passenden Einträgen mit den erforderlichen Rechten wird ein beliebiger ausgesucht. Für das Endresultat „Zugriff gewährt“ ist es unerheblich, welcher dieser Einträge den Ausschlag gegeben hat. Enthält keiner der passenden group Einträge die korrekten Rechten, gibt wiederum ein beliebiger von ihnen den Ausschlag für das Endresultat „Zugriff verweigert“.