Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:file-acl [2016/11/22 09:09] stefan_miethke [Default mount options] |
admin_grundlagen:file-acl [2026/02/19 15:56] (aktuell) ingo_wichmann [Doku] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | * http://wiki.ubuntuusers.de/ACL | + | ===== Sind acls im Dateisystem nutzbar? ===== |
| - | * http://users.suse.com/~agruen/acl/linux-acls/online/ | + | Bei ext4 und xfs sind ACLs per default aktiviert |
| - | * Kapitel "Zugriffssteuerungslisten unter Linux" im OpenSuSE Handbuch | + | |
| + | Für ext[234] default Mount-Optionen auslesen: | ||
| + | tune2fs -l /dev/sdXX | grep '^Default mount options' | ||
| ===== Default Mask setzen ===== | ===== Default Mask setzen ===== | ||
| setfacl -m "d:u::rwx,d:g::rwx,d:o::-" projekte2/ | 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 | setzt die default-mask auf ug=rwx,o= unter Umgehung der umask | ||
| - | ===== Berechtigung ===== | + | ===== ACL hinzufügen ===== |
| + | Michelle darf alles hier: | ||
| setfacl -m 'u:michelle:rwx' projekte2/ | setfacl -m 'u:michelle:rwx' projekte2/ | ||
| + | getfacl projekte2/ | ||
| - | Michelle darf alles hier | + | ===== "vererbbare" ACL hinzufügen ===== |
| + | Michelles Rechte werden weitergegeben bei Neuanlage von Dateiobjekten | ||
| + | setfacl -d -m 'u:michelle:rwx' projekte2/ | ||
| - | ==== Lesen ==== | + | ===== Aufgaben ===== |
| - | getfacl projekte2/ | + | groupadd group1 |
| + | groupadd group2 | ||
| + | groupadd group3 | ||
| - | ===== Default mount options ===== | + | useradd -m -s /bin/bash test1 -G group1,group2,group3 |
| - | (Heutzutage zum großen Teil obsolet) | + | useradd -m -s /bin/bash test2 -G group1,group2 |
| + | useradd -m -s /bin/bash test3 -G group1 | ||
| - | Für ext[234] gewünschte Mount-Optionen auslesen | + | touch /tmp/acltest |
| - | tune2fs -l /dev/xxx | + | 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| ''_'' | ''_'' | | ||
| + | |||
| + | ===== Dateien mit ACLs finden ===== | ||
| + | |||
| + | 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''). | ||
| ===== Fallen/Todos ===== | ===== Fallen/Todos ===== | ||
| - | * gelöschte Benutzer in File-ACLs: wie finde ich die? | + | * gelöschte Benutzer/Gruppen in File-ACLs: wie finde ich die? |
| - | * Was macht: | + | |
| - | group:g1:r-- | + | ====== Doku ====== |
| - | group:g2:-w- | + | * http://wiki.ubuntuusers.de/ACL |
| - | mask::r-- | + | * Kapitel "Zugriffssteuerungslisten unter Linux" im OpenSuSE Handbuch |
| - | * Was ist, wenn ich den Owner nachträglich auf einen in der ACL aufgeführten Benutzer ändere? | + | |
| - | * Wiedersprechende Berechtigungen zwischen Owner und ACL-User: welche Regel gewinnt? | + | 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. |
| - | * Was passiert, wenn die Maske etwas verbietet, aber der Eigentümer schreiben darf? | + | 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: |
| - | * Was passiert, wenn die Maske etwas verbietet, aber die Eigentümergruppe schreiben darf? | + | |
| + | ^ 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. | ||
| - | setfacl -n: maske nicht neu berechnen | + | ^ 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“. | ||