Linux Permissions Erklaert
Linux Permissions: Dateirechte verstehen
Das Linux-Rechtesystem schützt Dateien und Verzeichnisse. Lernen Sie, wie Sie Berechtigungen lesen und setzen.
Die Grundlagen
ls -la -rw-r--r-- 1 user group 1234 Jan 15 10:00 file.txt drwxr-xr-x 2 user group 4096 Jan 15 10:00 directory/ └┬┘└┬┘└┬┘ │ │ │ │ │ └── Others (alle anderen) │ └───── Group (Gruppe) └──────── User/Owner (Eigentümer) d = Directory, - = File, l = Symlink r = Read (4) w = Write (2) x = Execute (1)
Berechtigungen lesen
-rwxr-xr-x Position 1: d oder - (Typ) Position 2-4: rwx (User) Position 5-7: r-x (Group) Position 8-10: r-x (Others) # Beispiele -rw-r--r-- → User: lesen+schreiben, Group+Others: nur lesen -rwx------ → Nur User kann alles, Rest nichts drwxr-xr-x → Verzeichnis, alle können lesen, nur User schreiben
Numerische Notation
r = 4 w = 2 x = 1 rwx = 4+2+1 = 7 rw- = 4+2 = 6 r-x = 4+1 = 5 r-- = 4 = 4 # Zusammengesetzt (User-Group-Others): 755 = rwxr-xr-x (Verzeichnisse, Executables) 644 = rw-r--r-- (normale Dateien) 600 = rw------- (private Dateien) 700 = rwx------ (private Verzeichnisse)
chmod - Rechte ändern
# Numerisch chmod 755 script.sh chmod 644 config.txt chmod 600 secrets.env # Symbolisch chmod u+x script.sh # User: Execute hinzufügen chmod g-w file.txt # Group: Write entfernen chmod o-rwx private.txt # Others: alles entfernen chmod a+r public.txt # All: Read hinzufügen chmod u=rwx,g=rx,o=rx file # Explizit setzen # Rekursiv chmod -R 755 directory/ chmod -R u+rwX,go+rX dir/ # X = nur Verzeichnisse # Häufige Anwendungen chmod 755 /var/www/html # Webroot chmod 644 /var/www/html/*.html # HTML-Dateien chmod 600 ~/.ssh/id_rsa # Private SSH Key chmod 700 ~/.ssh # SSH Verzeichnis
chown - Eigentümer ändern
# Syntax: chown user:group file chown www-data:www-data /var/www/html chown -R app:app /home/app/ chown :developers project/ # Nur Gruppe ändern chown admin file.txt # Nur User ändern # Rekursiv chown -R www-data:www-data /var/www/
Spezielle Permissions
# SUID (4): Ausführung als Eigentümer chmod u+s /usr/bin/passwd -rwsr-xr-x # 's' statt 'x' bei User # Beispiel: passwd läuft als root, auch wenn normaler User es startet # SGID (2): Ausführung als Gruppe / Vererbung in Verzeichnissen chmod g+s /shared/projects/ drwxrwsr-x # 's' statt 'x' bei Group # Neue Dateien im Verzeichnis erben die Gruppe # Sticky Bit (1): Nur Eigentümer kann löschen chmod +t /tmp drwxrwxrwt # 't' am Ende # Jeder kann schreiben, aber nur eigene Dateien löschen # Numerisch chmod 4755 file # SUID + 755 chmod 2755 dir # SGID + 755 chmod 1777 /tmp # Sticky + 777
umask - Standard-Rechte
# umask bestimmt Standard-Rechte für neue Dateien umask # Aktuellen Wert anzeigen (z.B. 0022) umask 0022 # Setzen # Berechnung: # Dateien: 666 - umask = 644 # Verzeichnisse: 777 - umask = 755 umask 0022: Dateien=644, Verzeichnisse=755 (Standard) umask 0077: Dateien=600, Verzeichnisse=700 (Privat) umask 0002: Dateien=664, Verzeichnisse=775 (Gruppen-Schreiben)
ACLs (erweiterte Rechte)
# Installation apt install acl # ACL hinzufügen setfacl -m u:developer:rwx /project/ setfacl -m g:team:rx /project/ # ACL anzeigen getfacl /project/ # ACL entfernen setfacl -x u:developer /project/ setfacl -b /project/ # Alle ACLs entfernen # Standard-ACL für neue Dateien setfacl -d -m g:team:rwx /project/
Typische Szenarien
# Web-Server (Nginx/Apache)
chown -R www-data:www-data /var/www/html/
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
# Upload-Verzeichnis
chmod 775 /var/www/html/uploads/
chown www-data:developers /var/www/html/uploads/
# Private SSH Keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
# Shared Development
chmod 2775 /project/
chown -R :developers /project/
# SGID: Neue Dateien gehören automatisch zur Gruppe
Fehlersuche
# "Permission denied" Debug ls -la /path/to/file ls -la /path/to/ ls -la /path/ # Prozess-User prüfen ps aux | grep nginx # nginx läuft als www-data? → Datei muss für www-data lesbar sein # namei zeigt Permissions des gesamten Pfads namei -l /var/www/html/index.html
💡 Tipp:
Nutzen Sie nie chmod 777! Das erlaubt jedem alles und ist ein Sicherheitsrisiko. Analysieren Sie stattdessen, welche minimalen Rechte tatsächlich benötigt werden.