Files
it-know-how/Linux/BASH Basics/Dateiberechtigungen.md
T
2026-09-02 16:32:50 +02:00

7.6 KiB

Dateiberechtigungen - chmod und chown

Verwaltung von Zugriffsrechten, Eigentümern und Gruppen in Linux.

Rechte-System in Linux

Jede Datei hat:

  • Eigentümer (Owner) - der Benutzer, dem die Datei gehört
  • Gruppe (Group) - eine Benutzergruppe
  • Zugriffsrechte für drei Bereiche:
    • u (user) = Eigentümer
    • g (group) = Gruppe
    • o (others) = Andere

Jeder Bereich hat drei Rechte:

  • r (read) = Lesen (4)
  • w (write) = Schreiben (2)
  • x (execute) = Ausführen (1)

Rechte anzeigen

ls -l datei.txt

Ausgabe:

-rw-r--r-- 1 alice developers 1234 Nov 7 10:00 datei.txt
  • Position 1: Dateityp (- = Datei, d = Verzeichnis, l = Link)
  • Position 2-4: User-Rechte (rw-)
  • Position 5-7: Group-Rechte (r--)
  • Position 8-10: Other-Rechte (r--)
  • alice = Eigentümer
  • developers = Gruppe

chmod - Zugriffsrechte ändern

Symbolische Notation

chmod [ugoa][+-=][rwx] datei

Rechte hinzufügen:

chmod u+x script.sh         # Eigentümer: ausführbar
chmod g+w datei.txt         # Gruppe: schreibbar
chmod o+r datei.txt         # Andere: lesbar
chmod a+x script.sh         # Alle: ausführbar

Rechte entfernen:

chmod u-x script.sh         # Eigentümer: nicht ausführbar
chmod g-w datei.txt         # Gruppe: nicht schreibbar
chmod o-r datei.txt         # Andere: nicht lesbar

Rechte setzen (überschreiben):

chmod u=rw,g=r,o= datei.txt    # User: rw, Group: r, Others: keine
chmod a=r datei.txt            # Alle: nur lesen

Numerische Notation (Oktal)

Rechte als dreistellige Oktalzahl:

Wert Rechte Bedeutung
0 --- Keine Rechte
1 --x Ausführen
2 -w- Schreiben
3 -wx Schreiben + Ausführen
4 r-- Lesen
5 r-x Lesen + Ausführen
6 rw- Lesen + Schreiben
7 rwx Alle Rechte

Häufige Kombinationen:

chmod 644 datei.txt        # rw-r--r-- (Standard für Dateien)
chmod 755 script.sh        # rwxr-xr-x (Standard für Scripts)
chmod 700 privat.key       # rwx------ (Nur Eigentümer)
chmod 600 ~/.ssh/id_rsa    # rw------- (SSH-Schlüssel)
chmod 777 verzeichnis      # rwxrwxrwx (Alle Rechte - UNSICHER!)

Beispiel: chmod 755 bedeutet:

  • User: 7 (rwx)
  • Group: 5 (r-x)
  • Others: 5 (r-x)

Rekursiv

chmod -R 755 /pfad/zum/verzeichnis

Nur Verzeichnisse oder nur Dateien:

find . -type d -exec chmod 755 {} +    # Alle Verzeichnisse
find . -type f -exec chmod 644 {} +    # Alle Dateien

Spezielle Rechte

Sticky Bit (nur Eigentümer kann löschen):

chmod +t /tmp               # Symbolic
chmod 1777 verzeichnis      # Numeric (rwxrwxrwt)

SUID (läuft mit Rechten des Eigentümers):

chmod u+s /usr/bin/passwd   # Symbolic
chmod 4755 datei            # Numeric (rwsr-xr-x)

SGID (neue Dateien erben Gruppe):

chmod g+s verzeichnis       # Symbolic
chmod 2755 verzeichnis      # Numeric (rwxr-sr-x)

Praktische Beispiele

Script ausführbar machen:

chmod +x meinscript.sh
./meinscript.sh

SSH-Verzeichnis absichern:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys

Web-Verzeichnis:

chmod -R 755 /var/www/html
find /var/www/html -type f -exec chmod 644 {} +
find /var/www/html -type d -exec chmod 755 {} +

Projekt-Verzeichnis:

chmod -R u+rwX,g+rX,o-rwx projektordner

(X = ausführbar nur für Verzeichnisse)

chown - Eigentümer und Gruppe ändern

Grundsyntax

chown [OPTIONEN] EIGENTÜMER[:GRUPPE] DATEI

Eigentümer ändern

chown alice datei.txt

Eigentümer und Gruppe ändern

chown alice:developers datei.txt

Nur Gruppe ändern

chown :developers datei.txt

Oder mit chgrp:

chgrp developers datei.txt

Rekursiv

chown -R alice:developers /pfad/zum/verzeichnis

Von anderem Benutzer übernehmen

chown --reference=referenzdatei zieldatei

Praktische Beispiele

Web-Server Verzeichnis:

sudo chown -R www-data:www-data /var/www/html

Home-Verzeichnis korrigieren:

sudo chown -R alice:alice /home/alice

Nach Copy von Root:

sudo cp /root/datei.txt /home/alice/
sudo chown alice:alice /home/alice/datei.txt

Nur Dateien, nicht Verzeichnisse:

find /pfad -type f -exec chown alice:developers {} +

Nur bei Bedarf ändern:

find /pfad ! -user alice -exec chown alice {} +
find /pfad ! -group developers -exec chgrp developers {} +

Standardmäßig ändert chown das Ziel des Links:

chown alice symlink  # ändert Ziel
chown -h alice symlink  # ändert nur den Link selbst

Kombinierte Anwendung

Berechtigungen komplett setzen

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} +
sudo find /var/www/html -type f -exec chmod 644 {} +

Projekt-Setup

sudo chown -R alice:developers /opt/projekt
chmod -R u+rwX,g+rwX,o-rwx /opt/projekt

Backup wiederherstellen

sudo tar -xpf backup.tar.gz  # -p bewahrt Rechte
sudo chown -R alice:alice /home/alice/restored/

Berechtigungen prüfen

ls -l datei.txt              # Einfache Ansicht
stat datei.txt               # Detaillierte Info
getfacl datei.txt            # ACLs anzeigen (falls gesetzt)

Eigentümer-ID statt Name

chown 1000:1000 datei.txt    # Verwendet UID und GID direkt

UIDs anzeigen:

id alice                     # UID und GIDs von alice

Fehler vermeiden

Rekursive Änderungen testen

# Erst anzeigen
find /pfad -ls

# Dann ändern
sudo chown -R alice:developers /pfad

NIEMALS auf Root-Verzeichnis

# GEFÄHRLICH - bricht System
sudo chown -R user:user /              # NIEMALS!
sudo chmod -R 777 /                    # NIEMALS!

# Nur eigene Verzeichnisse
sudo chown -R user:user /home/user

Zu permissive Rechte

# FALSCH - macht alles ausführbar
chmod -R 777 verzeichnis    # NICHT verwenden!

# RICHTIG - differenziert
find verzeichnis -type d -exec chmod 755 {} +
find verzeichnis -type f -exec chmod 644 {} +

Systemdateien

# Wichtige Systemdateien sollten root gehören
ls -l /etc/passwd /etc/shadow
# -rw-r--r-- 1 root root ... /etc/passwd
# -rw-r----- 1 root shadow ... /etc/shadow

Mit sudo

chown erfordert meist Root-Rechte:

sudo chown root:root /etc/wichtig.conf
sudo chmod 644 /etc/wichtig.conf

Ohne sudo:

# Nur eigene Dateien
chmod 644 meine_datei.txt

# chown nur als root
chown alice datei.txt  # Permission denied (außer eigene Datei)

Zusammenfassung

Befehl Zweck Beispiel
chmod Rechte ändern chmod 755 script.sh
chown Eigentümer ändern chown alice:developers file
chgrp Nur Gruppe ändern chgrp developers file
ls -l Rechte anzeigen ls -l file
stat Details anzeigen stat file

Standard-Rechte:

  • Dateien: 644 (rw-r--r--)
  • Scripts: 755 (rwxr-xr-x)
  • Verzeichnisse: 755 (rwxr-xr-x)
  • Private Dateien: 600 (rw-------)

Siehe auch