Der Zugriff auf Dateien und Verzeichnisse wird über ein Berechtigungssystem geregelt. Jede Datei gehört einem Besitzer und einer Gruppe, und für drei Benutzerklassen werden separate Zugriffsrechte vergeben.

Das Berechtigungsmodell

Jede Datei hat Berechtigungen für drei Benutzerklassen:

  • Besitzer (u) – Der Benutzer, dem die Datei gehört
  • Gruppe (g) – Alle Mitglieder der zugewiesenen Gruppe
  • Andere (o) – Alle übrigen Benutzer

Für jede Klasse gibt es drei Berechtigungstypen:

  • Lesen (r) – Dateiinhalt anzeigen oder Verzeichnisinhalt auflisten
  • Schreiben (w) – Datei ändern oder Dateien im Verzeichnis erstellen/löschen
  • Ausführen (x) – Datei als Programm starten oder in Verzeichnis wechseln

Berechtigungen anzeigen

Mit ls -l siehst du die Berechtigungen einer Datei:

ls -l datei.txt

Die Ausgabe sieht so aus:

-rw-r--r-- 1 dominic users 4096 Jan 16 10:00 datei.txt

Die ersten zehn Zeichen zeigen den Dateityp und die Berechtigungen:

-rw-r--r--
│└┬┘└┬┘└┬┘
│ │  │  └── Andere: nur lesen (r--)
│ │  └───── Gruppe: nur lesen (r--)
│ └──────── Besitzer: lesen und schreiben (rw-)
└────────── Dateityp: normale Datei (-)

Das erste Zeichen gibt den Dateityp an: - für normale Dateien, d für Verzeichnisse, l für symbolische Links.

Berechtigungen bei Dateien vs. Verzeichnissen

Die gleichen Buchstaben haben bei Dateien und Verzeichnissen unterschiedliche Bedeutungen:

BerechtigungBei DateienBei Verzeichnissen
r (Lesen)Inhalt anzeigenDateien auflisten mit ls
w (Schreiben)Inhalt ändernDateien erstellen und löschen
x (Ausführen)Als Programm startenMit cd hineinwechseln

Berechtigungen ändern mit chmod

Der Befehl chmod ändert Dateiberechtigungen. Nur der Besitzer oder root kann die Berechtigungen einer Datei ändern.

chmod [OPTIONEN] MODUS DATEI...

Du kannst Berechtigungen auf zwei Arten angeben: symbolisch oder numerisch.

Symbolische Methode

Die symbolische Schreibweise verwendet Buchstaben und Operatoren:

chmod [ugoa][+-=][rwx] datei
  • u, g, o, a – Benutzerklasse (user, group, others, all)
  • +, -, = – Berechtigung hinzufügen, entfernen oder setzen
  • r, w, x – Lesen, Schreiben, Ausführen

Beispiele:

Ausführungsrecht für die Gruppe setzen:

chmod g+x script.sh

Schreibrecht für alle entfernen:

chmod a-w datei.txt

Besitzer bekommt alle Rechte, Gruppe nur Lesen, Andere nichts:

chmod u=rwx,g=r,o= datei.txt

Rekursiv Ausführungsrecht für Andere entfernen:

chmod -R o-x verzeichnis/

Numerische Methode

Die numerische Schreibweise verwendet eine dreistellige Zahl. Jede Ziffer steht für eine Benutzerklasse (Besitzer, Gruppe, Andere) und ist die Summe der Berechtigungswerte:

BerechtigungWert
Lesen (r)4
Schreiben (w)2
Ausführen (x)1

Berechnung:

  • rwx = 4 + 2 + 1 = 7
  • rw- = 4 + 2 + 0 = 6
  • r-x = 4 + 0 + 1 = 5
  • r-- = 4 + 0 + 0 = 4

Häufige Kombinationen:

chmod 755 script.sh    # rwxr-xr-x – Besitzer alles, Rest lesen/ausführen
chmod 644 datei.txt    # rw-r--r-- – Besitzer lesen/schreiben, Rest nur lesen
chmod 700 privat/      # rwx------ – Nur Besitzer hat Zugriff

Numerische Berechtigungen anzeigen

Mit stat siehst du die Berechtigungen in numerischer Form:

stat -c "%a %n" datei.txt

Ausgabe:

644 datei.txt

Sonderberechtigungen

Neben den Standardrechten gibt es drei Sonderberechtigungen, die mit einer vierten Ziffer am Anfang gesetzt werden:

BitWertBedeutung
setuid4Programm läuft mit Rechten des Besitzers
setgid2Programm läuft mit Rechten der Gruppe; neue Dateien in Verzeichnissen erben die Gruppe
Sticky1In Verzeichnissen kann nur der Besitzer seine Dateien löschen

Beispiel: Das Sticky-Bit wird bei /tmp verwendet, damit Benutzer nur ihre eigenen Dateien löschen können:

chmod 1777 /tmp

Die Sonderbits erscheinen in der ls -l Ausgabe als s oder t anstelle von x.

Besitzer und Gruppe ändern

Mit chown änderst du den Besitzer einer Datei:

chown neuer_besitzer datei.txt
chown neuer_besitzer:neue_gruppe datei.txt

Mit chgrp änderst du nur die Gruppe:

chgrp neue_gruppe datei.txt

Zusammenfassung

Dateiberechtigungen bestimmen, wer Dateien lesen, schreiben oder ausführen darf. Mit ls -l zeigst du die aktuellen Berechtigungen an, mit chmod änderst du sie. Die numerische Schreibweise wie chmod 755 ist kompakt, die symbolische wie chmod u+x ist lesbarer.