VMware ESXi and vSphere Cluster Management

Linux-Dateiberechtigungen: Lesen, Schreiben und Ausführen

Linux-Dateirechte verständlich erklärt: r, w und x für Dateien und Verzeichnisse, Eigentümer, Gruppen, chmod, chown und chgrp.

Warum Linux Zugriffsrechte verwendet

Zugriffsrechte sind Regeln, die festlegen, welche Aktionen ein Benutzer auf einer Datei oder einem Verzeichnis ausführen darf. Sie schützen persönliche Daten ebenso wie systemkritische Dateien vor unbeabsichtigten oder unerlaubten Änderungen.

Linux bewertet einen Zugriff anhand des anfragenden Benutzerkontos und der Zuordnung des Dateisystemobjekts. Jede Datei und jedes Verzeichnis besitzt einen Eigentümer und eine Gruppe. Abhängig davon, wer zugreift, verwendet Linux die passenden Rechte für den Eigentümer, die Gruppe oder andere Benutzer.

Wichtig ist die Unterscheidung zwischen Dateien und Verzeichnissen: Bei einer Datei beschreiben die Rechte hauptsächlich den Umgang mit ihrem Inhalt. Bei einem Verzeichnis regeln sie dagegen das Auflisten, Verändern und Durchqueren einer Struktur.

Die drei grundlegenden Berechtigungen

Die Standardrechte werden mit drei Buchstaben dargestellt:

  • r steht für read, also Lesen.
  • w steht für write, also Schreiben.
  • x steht für execute, also Ausführen bei Dateien und Durchqueren bei Verzeichnissen.

Diese Markierungen sind Berechtigungsbits. Ein gesetztes Bit wird durch den Buchstaben angezeigt, ein nicht gesetztes Bit durch einen Bindestrich. Die neun Standardbits werden in drei Dreiergruppen angeordnet: Eigentümer, Gruppe und andere.

rwx   r-x   r--
│     │     └── Rechte für andere
│     └──────── Gruppenrechte
└────────────── Eigentümerrechte

Wirkung auf reguläre Dateien und Verzeichnisse

RechtSymbolReguläre DateiVerzeichnis
LesenrDateiinhalt lesenEnthaltene Namen auflisten
SchreibenwInhalt ändern oder überschreibenEinträge anlegen, umbenennen und löschen
AusführenxDatei als Programm oder Skript starten, sofern sie dafür geeignet istVerzeichnis durchqueren und bekannte Pfade darin auflösen

Rechte bei regulären Dateien

Eine reguläre Datei ist ein normales Dateisystemobjekt, zum Beispiel ein Textdokument, ein Skript oder ein kompiliertes Programm.

  • r erlaubt das Lesen des Dateiinhalts.
  • w erlaubt das Ändern oder Überschreiben des Dateiinhalts.
  • x erlaubt das Starten der Datei als Programm oder Skript. Bei einem Skript muss außerdem ein passender Interpreter angegeben sein, häufig über eine Shebang-Zeile wie #!/bin/sh.

Das Schreibrecht auf einer Datei ist nicht automatisch das Recht, diese Datei zu löschen. Beim Löschen wird der Namenseintrag im übergeordneten Verzeichnis entfernt. Deshalb sind dafür vor allem die Schreib- und Durchquerungsrechte auf diesem Verzeichnis entscheidend.

Beispiel: private Textdatei

-rw-------  notizen.txt

Der Eigentümer darf lesen und schreiben. Die Gruppe und andere Benutzer besitzen keine Rechte. Das führende Minus zeigt an, dass es sich um eine reguläre Datei handelt.

Rechte bei Verzeichnissen

Ein Verzeichnis organisiert Namen und Verweise auf andere Dateisystemobjekte. Die drei Rechte haben dort eine andere praktische Bedeutung als bei einer Datei.

  • r erlaubt, die enthaltenen Namen aufzulisten, etwa mit ls.
  • w erlaubt, Verzeichniseinträge anzulegen, umzubenennen und zu löschen. In der Praxis wird dafür meist zusätzlich x benötigt.
  • x ist das Durchquerungsrecht. Es erlaubt, durch das Verzeichnis zu gehen und einen bekannten Pfad innerhalb davon aufzulösen.

Für sinnvolle Verzeichnisarbeit sind Kombinationen wichtig: r+x erlaubt normalerweise das Auflisten und den Zugriff auf die Einträge. w+x erlaubt das Erstellen, Umbenennen und Löschen von Einträgen, auch wenn die Namen des vollständigen Inhalts nicht aufgelistet werden dürfen.

Nur x ohne r

Besitzt ein Benutzer für ein Verzeichnis x, aber kein r, kann er bei bekanntem Dateinamen einen Pfad innerhalb des Verzeichnisses ansprechen. Eine normale Inhaltsauflistung ist jedoch nicht möglich, weil die Namen nicht gelesen werden dürfen.

d--x--x--x  ablage/

Dieses Muster kann beispielsweise für eine Ablage verwendet werden, deren Inhalte nicht vollständig entdeckt werden sollen. Es ist keine vollständige Sicherheitslösung gegen alle Formen des Zugriffs, sondern beschreibt nur die Wirkung der Standardrechte.

Das Löschen einer Datei

Beim Löschen von bericht.txt ist hauptsächlich das übergeordnete Verzeichnis relevant. Selbst wenn die Datei für den Benutzer nicht schreibbar ist, kann sie gelöscht werden, wenn der Benutzer im Verzeichnis die nötigen Rechte besitzt.

# Rechte des Verzeichnisses selbst anzeigen
ls -ld verzeichnis

Die drei Berechtigungsklassen

Jedes der drei Rechte kann für drei Benutzerklassen unabhängig gesetzt oder entfernt werden:

KlasseSymbolBetroffene BenutzerPosition in der Rechteanzeige
Benutzer beziehungsweise EigentümeruDas Benutzerkonto, dem das Objekt gehörtErste Dreiergruppe
GruppegMitglieder der zugeordneten GruppeZweite Dreiergruppe
AndereoAlle, die weder Eigentümer sind noch über die Objektgruppe bewertet werdenDritte Dreiergruppe

Die typische Reihenfolge lautet also u, g, o. Für einen Zugriff wird die passende Klasse des anfragenden Kontos herangezogen. Der Eigentümer wird als Eigentümer bewertet; ist der Benutzer nicht Eigentümer, aber Mitglied der zugeordneten Gruppe, werden die Gruppenrechte verwendet. Andernfalls gelten die Rechte für andere.

Rechteketten lesen und interpretieren

Eine Rechteanzeige besteht aus einem Dateitypzeichen und neun Standardbits. Das erste Zeichen beschreibt beispielsweise eine reguläre Datei mit - oder ein Verzeichnis mit d. Danach folgen die Gruppen rwx für Eigentümer, Gruppe und andere.

-rwxr-xr--

Die Kette bedeutet: Der Eigentümer darf lesen, schreiben und ausführen. Die Gruppe darf lesen und ausführen, aber nicht schreiben. Andere Benutzer dürfen nur lesen.

RechteketteEigentümerrechteGruppenrechteRechte für andereTypischer Einsatzzweck
rw-------Lesen, SchreibenKeineKeinePrivate Datei
rw-rw----Lesen, SchreibenLesen, SchreibenKeineGemeinsam lesbare und bearbeitbare Projektdatei
rwxr-xr-xLesen, Schreiben, AusführenLesen, AusführenLesen, AusführenÖffentlich ausführbares Skript
rwx------Lesen, Schreiben, DurchquerenKeineKeinePrivates Arbeitsverzeichnis

Praktische Muster

Ein Skript mit rwxr-xr-x kann vom Eigentümer bearbeitet und gestartet werden. Gruppe und andere dürfen es lesen und ausführen, aber nicht verändern:

-rwxr-xr-x  backup.sh

Ein privates Verzeichnis mit rwx------ kann nur vom Eigentümer aufgelistet, durchquert und verändert werden:

drwx------  privat/

Dateieigentümer und Gruppenzuordnung

Jede Datei und jedes Verzeichnis besitzt einen Eigentümer und eine zugeordnete Gruppe. Die Gruppenmitgliedschaft eines Benutzerkontos bestimmt, ob es die Gruppenrechte des Objekts nutzen kann.

Eigentum und Rechte sind miteinander verbunden, aber nicht dasselbe: Der Eigentümer ist ein Benutzerkonto, während die Rechte festlegen, was die jeweilige Klasse tun darf. Administrative Rechte, beispielsweise über ein Administrationskonto, können Änderungen am Eigentümer erlauben und unter bestimmten Umständen Zugriffe unabhängig von den normalen Benutzerrechten ermöglichen.

Rechte mit ls -l prüfen

Mit ls -l lassen sich Rechte, Eigentümer und Gruppe einer Datei anzeigen:

ls -l datei
-rw-r----- 1 anna projekt 1200 Aug 18 10:30 bericht.txt

In diesem Beispiel ist -rw-r----- die Rechtekette. anna ist der Eigentümer und projekt die zugeordnete Gruppe.

Um die Rechte des Verzeichnisses selbst anzuzeigen, verwendet man ls -ld. Ohne -d würde ls normalerweise den Inhalt des Verzeichnisses anzeigen:

ls -ld verzeichnis

Rechte mit chmod ändern

chmod ändert Zugriffsrechte. Es gibt eine symbolische und eine numerische Schreibweise.

Symbolische Schreibweise

Bei der symbolischen Schreibweise werden Klassen wie u, g und o mit den gewünschten Rechten kombiniert. Ein Gleichheitszeichen setzt die angegebenen Rechte exakt:

chmod u=rw,g=r,o= datei

Damit erhält der Eigentümer Lesen und Schreiben, die Gruppe Lesen und andere Benutzer keine Rechte. Das entspricht:

-rw-r-----  datei

Mit einem Pluszeichen kann ein Recht ergänzt werden:

chmod u+x skript.sh

Mit einem Minuszeichen wird ein Recht entfernt:

chmod o-w datei

Numerische Schreibweise

In der numerischen Schreibweise wird jede Dreiergruppe als Oktalzahl angegeben. Die Werte werden addiert:

RechtOktaler WertKombinationsbeispiele
r4r-- = 4
w2-w- = 2
x1--x = 1
rw-64 + 2
r-x54 + 1
rwx74 + 2 + 1

Die drei Ziffern stehen in der Reihenfolge Eigentümer, Gruppe und andere. 640 bedeutet also Eigentümer rw-, Gruppe r-- und andere ---:

chmod 640 datei

Für ein Skript mit vollen Rechten für den Eigentümer sowie Lesen und Ausführen für Gruppe und andere lautet der Befehl:

chmod 755 skript.sh

Eigentümer und Gruppe ändern

Mit chown wird der Eigentümer geändert. Dafür sind in der Regel administrative Rechte erforderlich:

chown benutzer datei

Eigentümer und Gruppe können gemeinsam gesetzt werden:

chown benutzer:gruppe datei

chgrp ändert nur die Gruppenzuordnung:

chgrp projekt datei

Nach einer Gruppenänderung muss eine bestehende Sitzung unter Umständen neu gestartet oder die Gruppenzugehörigkeit neu geladen werden, damit das Konto die neue Mitgliedschaft verwendet.

Typische Fehler und ihre Diagnose

Datei trotz Leserecht nicht geöffnet

Fehlt auf einem übergeordneten Verzeichnis das Durchquerungsrecht x, kann eine Datei trotz vorhandenem Leserecht nicht über ihren vollständigen Pfad erreicht werden. Prüfe die Rechte jedes Verzeichnisses im Pfad:

ls -ld /pfad
ls -ld /pfad/unterverzeichnis

Setze nur das erforderliche x für die zuständige Klasse, statt unnötig Leserechte für das Verzeichnis zu vergeben.

Skript lässt sich nicht direkt starten

Häufig fehlt das Ausführbit x oder der Interpreter ist nicht korrekt angegeben. Prüfe die Rechte mit ls -l und die erste Zeile des Skripts. Wenn das Skript vertrauenswürdig ist, kann das Ausführrecht ergänzt werden:

chmod +x backup.sh

Datei kann nicht gelöscht werden

Ist eine Datei nicht löschbar, obwohl sie für den Benutzer schreibbar ist, fehlen meist w und/oder x im übergeordneten Verzeichnis. Prüfe daher die Verzeichnisrechte und nicht nur die Rechte der Datei.

Verzeichnis betretbar, Inhalt aber nicht sichtbar

Das Muster --x ohne r erlaubt den Zugriff auf bekannte Pfade, aber keine vollständige Auflistung. Soll der Inhalt aufgelistet werden, benötigt die zuständige Klasse zusätzlich r.

Gruppenmitglied erhält nicht die erwarteten Rechte

Prüfe, ob das Konto tatsächlich Mitglied der Dateigruppe ist, ob die Datei die richtige Gruppe besitzt und ob die aktuelle Sitzung die Gruppenänderung bereits kennt. Eine falsche Gruppenzuordnung kann dazu führen, dass stattdessen die Rechte für andere Benutzer greifen.

Zusammenfassung

  • r, w und x sind die drei grundlegenden Standardrechte.
  • Bei Dateien bedeuten sie Lesen, Ändern und Starten.
  • Bei Verzeichnissen bedeuten sie Auflisten, Verzeichniseinträge verändern und Durchqueren.
  • Die neun Bits sind in die Klassen Eigentümer, Gruppe und andere aufgeteilt.
  • Eigentümer und Gruppenzuordnung bestimmen, welche Rechteklasse für einen Benutzer gilt.
  • ls -l zeigt Rechte, Eigentümer und Gruppe an.
  • chmod ändert Rechte symbolisch oder numerisch.
  • chown ändert den Eigentümer, chgrp die Gruppe.
  • Beim Löschen einer Datei sind vor allem die Rechte des übergeordneten Verzeichnisses entscheidend.

Als nächster Schritt eignet sich die Vertiefung mit Linux-Dateirechten und ihren Zugriffsklassen.