Linux Deutsch

Linux-Berechtigungsbits verstehen: Lesen, Schreiben und Ausführen

Lerne, wie du Linux-Berechtigungen in der Ausgabe von ls -l liest: Dateityp, user, group, others sowie die Rechte r, w und x für Dateien und Verzeichnisse.

Linux-Dateiberechtigungen bestimmen, welche Benutzer auf eine Datei oder ein Verzeichnis zugreifen dürfen. In der Langformausgabe von ls -l erscheinen dafür neun grundlegende Berechtigungsbits. Sie sind auf drei Benutzerklassen verteilt: Eigentümer, Gruppe und andere Benutzer.

Grundprinzip der Linux-Berechtigungsbits

Jede reguläre Datei und jedes Verzeichnis besitzt einen Eigentümer (englisch owner oder user) und eine zugeordnete Dateigruppe (englisch group). Für alle Benutzer, die weder Eigentümer noch über diese Gruppe berechtigt sind, gibt es die Klasse others, also andere Benutzer.

Jede dieser drei Klassen kann drei Rechte besitzen:

  • r steht für read, also Lesen.
  • w steht für write, also Schreiben.
  • x steht für execute, also Ausführen. Bei Verzeichnissen bedeutet x vor allem Betreten und Durchsuchen.

Damit gibt es neun klassische Berechtigungsbits: drei für den Eigentümer, drei für die Gruppe und drei für andere Benutzer.

Die Berechtigungsanzeige mit ls -l

Mit ls -l kannst du die Eigenschaften von Einträgen im aktuellen Verzeichnis anzeigen:

ls -l

Eine typische Zeile sieht beispielsweise so aus:

-rw-rw-r-- 1 anna entwickler 1200 Aug 18 10:30 bericht.txt

Die ersten zehn Zeichen bestehen aus einem Dateitypzeichen und neun Berechtigungszeichen. Das erste Zeichen ist kein Berechtigungsbit. Es kennzeichnet den Dateityp.

Positionen einer Berechtigungszeichenkette

Zeichenposition: 1 | Bedeutung: Dateityp | Beispiel: -

Zeichenposition: 2–4 | Bedeutung: Rechte des Eigentümers (user) | Beispiel: rw-

Zeichenposition: 5–7 | Bedeutung: Rechte der Dateigruppe (group) | Beispiel: rw-

Zeichenposition: 8–10 | Bedeutung: Rechte anderer Benutzer (others) | Beispiel: r--

Ein Bindestrich an einer Rechteposition bedeutet, dass dieses Recht nicht gesetzt ist. Im Beispiel steht das erste - für eine reguläre Datei; die übrigen Bindestriche zeigen fehlende Rechte an.

Die drei Rechteblöcke: user, group und others

Die neun Rechtezeichen werden immer in drei Dreiergruppen gelesen:

-   rw-   rw-   r--
    user  group others

Die Reihenfolge ist fest:

  1. user: der Eigentümer der Datei oder des Verzeichnisses.
  2. group: Benutzer, die zur angegebenen Dateigruppe gehören.
  3. others: alle übrigen Benutzer.

In der vollständigen Ausgabe von ls -l erscheinen Eigentümer und Gruppe nach der Anzahl der Links:

-rw-rw-r-- 1 anna entwickler 1200 Aug 18 10:30 bericht.txt

Hier ist anna der Eigentümer und entwickler die Dateigruppe.

Beim Prüfen eines Zugriffs wird normalerweise die passende Klasse verwendet: Ist der Benutzer Eigentümer, zählt der user-Block. Andernfalls wird geprüft, ob er Mitglied der Dateigruppe ist; dann zählt der group-Block. Trifft beides nicht zu, wird der others-Block verwendet.

Bedeutung von r, w und x

Recht: r | Reguläre Datei: Inhalt lesen | Verzeichnis: Einträge auflisten | Nicht gesetzt: Die jeweilige Lese- oder Auflistungsaktion ist nicht erlaubt.

Recht: w | Reguläre Datei: Inhalt ändern | Verzeichnis: Einträge anlegen, löschen oder umbenennen | Nicht gesetzt: Die jeweilige Schreibaktion ist nicht erlaubt.

Recht: x | Reguläre Datei: Als Programm oder Skript starten | Verzeichnis: Betreten und Einträge durchsuchen | Nicht gesetzt: Ausführen beziehungsweise Durchsuchen ist nicht erlaubt.

Rechte bei regulären Dateien

Bei einer regulären Datei, etwa einem Textdokument, bedeutet r, dass der Inhalt gelesen werden darf. w erlaubt Änderungen am Inhalt. x kann ermöglichen, die Datei als Programm oder Skript zu starten.

Das Ausführrecht allein macht ein Skript nicht automatisch korrekt ausführbar: Es muss beispielsweise ein passender Interpreter oder eine gültige Shebang-Zeile vorhanden sein. Für den grundlegenden Rechtecheck ist jedoch entscheidend, ob im maßgeblichen Rechteblock ein x steht.

Rechte bei Verzeichnissen

Ein Verzeichnis ist kein gewöhnlicher Datencontainer, sondern organisiert Namen und Verweise auf weitere Dateisystemeinträge. Deshalb haben dieselben Buchstaben dort eine andere praktische Bedeutung:

  • r erlaubt, die Namen der Einträge im Verzeichnis aufzulisten.
  • w erlaubt, Einträge anzulegen, zu löschen oder umzubenennen. Dafür wird in der Praxis meist zusätzlich x benötigt.
  • x erlaubt, das Verzeichnis zu betreten und bekannte Einträge darin zu durchsuchen. Es wird häufig als Durchsuchrecht bezeichnet.

Der Zugriff auf Verzeichnisse erfordert oft eine Kombination mehrerer Rechte. Zum Auflisten des Inhalts braucht man typischerweise r und x. Ist nur x gesetzt, kann ein Benutzer unter Umständen auf einen bekannten Pfad zugreifen, aber den Verzeichnisinhalt nicht auflisten. Fehlt x auf dem Zielverzeichnis oder einem übergeordneten Verzeichnis, kann der Pfad unzugänglich sein.

Eine konkrete Rechtefolge lesen

Betrachte diese Ausgabe:

-rw-rw-r-- 1 anna entwickler 1200 Aug 18 10:30 bericht.txt

Die Zeichenkette -rw-rw-r-- wird so zerlegt:

  • Das erste - kennzeichnet eine reguläre Datei.
  • rw- im user-Block: Der Eigentümer darf lesen und schreiben, aber nicht ausführen.
  • rw- im group-Block: Mitglieder der Gruppe dürfen lesen und schreiben, aber nicht ausführen.
  • r-- im others-Block: Andere Benutzer dürfen nur lesen.

Keiner der drei Blöcke enthält ein x. Somit besitzt keine der drei Klassen das Ausführrecht.

Dateitypen in der Langformausgabe

Das führende Zeichen von ls -l kennzeichnet den Dateityp. Häufige Werte sind:

Zeichen: - | Dateityp: Reguläre Datei | Kurzbeschreibung: Gewöhnliche Datei, etwa ein Textdokument, Programm oder Skript.

Zeichen: d | Dateityp: Verzeichnis | Kurzbeschreibung: Organisiert Namen und Verweise auf weitere Einträge.

Zeichen: l | Dateityp: Symbolischer Link | Kurzbeschreibung: Verweist auf einen anderen Pfad.

Zeichen: c | Dateityp: Zeichengerät | Kurzbeschreibung: Gerät mit einem zeichenweisen Datenstrom.

Zeichen: b | Dateityp: Blockgerät | Kurzbeschreibung: Gerät mit blockweise übertragenen Daten.

Zeichen: s | Dateityp: Socket | Kurzbeschreibung: Kommunikationsendpunkt für Prozesse.

Zeichen: p | Dateityp: Named Pipe | Kurzbeschreibung: Benannter Kommunikationskanal zwischen Prozessen.

Die Rechtezeichen werden bei diesen Dateitypen ähnlich dargestellt, ihre praktische Wirkung kann sich aber unterscheiden. Besonders deutlich ist das bei Verzeichnissen: Dort steht x für Durchsuchen und Betreten, nicht für das Starten eines Programms.

Verzeichnisse selbst prüfen

Bei ls -l VERZEICHNIS wird normalerweise der Inhalt des Verzeichnisses angezeigt. Um die Eigenschaften des Verzeichnisses selbst zu sehen, verwendest du -d:

ls -ld VERZEICHNIS

Für die Einträge im aktuellen Verzeichnis reicht:

ls -l

Die drei Befehle helfen dir, Dateityp, klassische Berechtigungsbits, Eigentümer und Gruppe zu vergleichen.

Fehlende Berechtigungen systematisch untersuchen

Programm oder Skript startet nicht

Wenn eine vorhandene Datei nicht direkt gestartet werden kann, fehlt im maßgeblichen Rechteblock häufig x. Prüfe zunächst:

ls -l DATEI

Bestimme anschließend, ob du Eigentümer bist, zur Dateigruppe gehörst oder als anderer Benutzer behandelt wirst. Nur der entsprechende Block ist für die grundlegende Prüfung entscheidend.

Datei ist sichtbar, aber nicht änderbar

Fehlt im relevanten Block das w, darf die Datei von diesem Benutzer nicht geändert werden. Betrachte nicht automatisch nur die Eigentümerrechte, sondern vergleiche Eigentümer, Gruppe und deine tatsächliche Benutzerklasse.

Verzeichnis lässt sich nicht betreten

Fehlt das Durchsuchrecht x auf dem Verzeichnis oder auf einem übergeordneten Bestandteil des Pfads, kann der Zugriff scheitern. Prüfe deshalb die Rechte des Zielverzeichnisses und aller übergeordneten Verzeichnisse.

Zehn Zeichen statt neun Rechtezeichen?

Die Anzeige beginnt mit zehn Zeichen, weil das erste Zeichen den Dateityp angibt. Nur die folgenden neun Zeichen sind die klassischen Berechtigungsbits.

Grenzen der klassischen neun Bits

Diese Lektion behandelt die neun grundlegenden Unix-/Linux-Berechtigungsbits für Eigentümer, Gruppe und andere Benutzer. Sie sind wichtig, aber nicht die einzige Einflussgröße bei einer Zugriffsentscheidung.

  • setuid und setgid sind besondere Bits, die unter bestimmten Bedingungen die Identität oder Gruppenzugehörigkeit eines gestarteten Programms beeinflussen.
  • Das sticky bit wird häufig bei gemeinsam verwendeten Verzeichnissen eingesetzt und schränkt das Löschen oder Umbenennen fremder Einträge ein.
  • ACLs (Access Control Lists) können zusätzliche, detailliertere Regeln für einzelne Benutzer oder Gruppen enthalten.
  • Privilegierte Prozesse und weitere Sicherheitsmechanismen können die praktische Zugriffsentscheidung beeinflussen.

Für die ersten Schritte genügt jedoch das Grundmuster: Dateityp erkennen, die neun Zeichen in user, group und others aufteilen und anschließend r, w und x passend zum Dateityp interpretieren.

Zusammenfassung

  • Das erste Zeichen von ls -l kennzeichnet den Dateityp und gehört nicht zu den neun Berechtigungsbits.
  • Die neun Bits bestehen aus drei Blöcken: Eigentümer, Gruppe und andere Benutzer.
  • r bedeutet Lesen, w Schreiben und x Ausführen beziehungsweise bei Verzeichnissen Durchsuchen.
  • Ein Bindestrich bedeutet, dass das entsprechende Recht nicht gesetzt ist.
  • Beim Zugriff wird normalerweise zuerst die Eigentümerklasse, dann die Gruppenklasse und ansonsten die Klasse others berücksichtigt.
  • Bei Verzeichnissen wirken die Rechte anders als bei regulären Dateien und werden oft gemeinsam benötigt.

Weiterführend findest du Grundlagen zu Arten von Zugriffsrechten, zum Eigentümer einer Datei und zu Gruppen in Linux.