Erweiterte Rechte
Neben den klassischen POSIX-Rechten (rwx für Owner, Group, Others) gibt es drei besondere Bits sowie ACLs für feinere Zugriffssteuerung.
Besondere Bits
Abschnitt betitelt „Besondere Bits“SetUID (SUID)
Abschnitt betitelt „SetUID (SUID)“Wenn das SetUID-Bit auf einer ausführbaren Datei gesetzt ist, läuft das Programm mit den Rechten des Datei-Eigentümers — nicht mit den Rechten des aufrufenden Benutzers.
ls -l /usr/bin/passwd-rwsr-xr-x 1 root root 68208 /usr/bin/passwd# ↑# s statt x beim Owner = SUID gesetztpasswd gehört root und hat SUID gesetzt — jeder Benutzer kann damit sein eigenes
Passwort ändern, obwohl /etc/shadow nur für root schreibbar ist.
chmod u+s programm # SUID setzen (symbolisch)chmod 4755 programm # SUID setzen (oktal — führende 4)chmod u-s programm # SUID entfernenSetGID (SGID)
Abschnitt betitelt „SetGID (SGID)“Das SetGID-Bit wirkt unterschiedlich — je nachdem ob es auf einer Datei oder einem Verzeichnis gesetzt ist.
Auf ausführbaren Dateien: Das Programm läuft mit der Gruppe der Datei statt der primären Gruppe des aufrufenden Benutzers.
ls -l /usr/bin/write-rwxr-sr-x 1 root tty 14736 /usr/bin/write# ↑# s statt x bei der Group = SGID gesetztAuf Verzeichnissen: Neue Dateien und Unterverzeichnisse erben automatisch die Gruppe des Verzeichnisses — nicht die primäre Gruppe des Erstellers. Praktisch für gemeinsam genutzte Verzeichnisse:
mkdir /srv/projektchown :entwicklung /srv/projektchmod g+s /srv/projekt # SGID auf Verzeichnis setzen
# Jetzt erhalten alle neuen Dateien in /srv/projekt automatisch die Gruppe "entwicklung"chmod g+s verzeichnis # SGID setzen (symbolisch)chmod 2755 verzeichnis # SGID setzen (oktal — führende 2)Sticky-Bit
Abschnitt betitelt „Sticky-Bit“Das Sticky-Bit auf einem Verzeichnis verhindert, dass Benutzer Dateien anderer Benutzer löschen — auch wenn sie Schreibrecht auf das Verzeichnis haben.
ls -ld /tmpdrwxrwxrwt 1 root root 4096 /tmp# ↑# t statt x bei Others = Sticky-Bit gesetzt/tmp ist für alle schreibbar — ohne Sticky-Bit könnte jeder die Dateien anderer
löschen. Mit Sticky-Bit darf nur der Eigentümer (oder root) eine Datei löschen.
chmod +t /srv/shared # Sticky-Bit setzen (symbolisch)chmod 1777 /srv/shared # Sticky-Bit setzen (oktal — führende 1)chmod -t /srv/shared # Sticky-Bit entfernenÜbersicht: Oktal-Präfixe
Abschnitt betitelt „Übersicht: Oktal-Präfixe“| Bit | Oktal | Symbolisch | Wirkung |
|---|---|---|---|
| SetUID | 4xxx | u+s | Datei läuft als Eigentümer |
| SetGID | 2xxx | g+s | Datei läuft als Gruppe / Verzeichnis: Gruppe vererben |
| Sticky | 1xxx | +t | Nur Eigentümer kann eigene Dateien löschen |
| Kombination | 6xxx | ug+s | SetUID + SetGID |
In ls -l erscheint ein großes S / T (statt s / t), wenn das zugehörige
Execute-Bit nicht gesetzt ist — ein Hinweis auf eine wahrscheinlich fehlerhafte Konfiguration.
ACLs — Access Control Lists
Abschnitt betitelt „ACLs — Access Control Lists“Die klassischen POSIX-Rechte kennen nur drei Klassen (Owner, Group, Others). ACLs ermöglichen feingranulare Berechtigungen für beliebige Benutzer und Gruppen.
Voraussetzung
Abschnitt betitelt „Voraussetzung“Das Dateisystem muss mit ACL-Unterstützung eingehängt sein. Bei ext4 und xfs ist ACL-Unterstützung heute standardmäßig aktiv. Prüfen:
tune2fs -l /dev/sda1 | grep "Default mount options"# Default mount options: aclACLs anzeigen
Abschnitt betitelt „ACLs anzeigen“getfacl datei.txtBeispielausgabe:
# owner: micha# group: usersuser::rw-user:anna:r--group::r--group:entwicklung:rw-mask::rw-other::r--ACLs setzen
Abschnitt betitelt „ACLs setzen“# Einzelnen Benutzer berechtigensetfacl -m u:anna:rw datei.txt
# Gruppe berechtigensetfacl -m g:entwicklung:rw datei.txt
# Standard-ACL für ein Verzeichnis (vererbt sich auf neue Dateien)setfacl -d -m g:entwicklung:rw /srv/projekt
# ACL-Eintrag entfernensetfacl -x u:anna datei.txt
# Alle ACLs entfernensetfacl -b datei.txtDie Maske (mask)
Abschnitt betitelt „Die Maske (mask)“Die mask definiert die maximalen Rechte für Benutzer (außer Owner) und Gruppen.
getfacl zeigt die effektiven Rechte nach Anwendung der Maske:
setfacl -m m::r datei.txt # Maske auf read-only setzen# Damit können anna und gruppe "entwicklung" nicht mehr schreiben,# auch wenn ihre ACL-Einträge rw- enthaltenACLs und Backup
Abschnitt betitelt „ACLs und Backup“Viele Backup-Tools ignorieren ACLs standardmäßig. Mit tar ACLs erhalten:
tar --acls -czf backup.tar.gz /srv/projekttar --acls -xzf backup.tar.gz