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ümerrechteWirkung auf reguläre Dateien und Verzeichnisse
| Recht | Symbol | Reguläre Datei | Verzeichnis |
|---|---|---|---|
| Lesen | r | Dateiinhalt lesen | Enthaltene Namen auflisten |
| Schreiben | w | Inhalt ändern oder überschreiben | Einträge anlegen, umbenennen und löschen |
| Ausführen | x | Datei als Programm oder Skript starten, sofern sie dafür geeignet ist | Verzeichnis 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.txtDer 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 verzeichnisDie drei Berechtigungsklassen
Jedes der drei Rechte kann für drei Benutzerklassen unabhängig gesetzt oder entfernt werden:
| Klasse | Symbol | Betroffene Benutzer | Position in der Rechteanzeige |
|---|---|---|---|
| Benutzer beziehungsweise Eigentümer | u | Das Benutzerkonto, dem das Objekt gehört | Erste Dreiergruppe |
| Gruppe | g | Mitglieder der zugeordneten Gruppe | Zweite Dreiergruppe |
| Andere | o | Alle, die weder Eigentümer sind noch über die Objektgruppe bewertet werden | Dritte 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.
| Rechtekette | Eigentümerrechte | Gruppenrechte | Rechte für andere | Typischer Einsatzzweck |
|---|---|---|---|---|
| rw------- | Lesen, Schreiben | Keine | Keine | Private Datei |
| rw-rw---- | Lesen, Schreiben | Lesen, Schreiben | Keine | Gemeinsam lesbare und bearbeitbare Projektdatei |
| rwxr-xr-x | Lesen, Schreiben, Ausführen | Lesen, Ausführen | Lesen, Ausführen | Öffentlich ausführbares Skript |
| rwx------ | Lesen, Schreiben, Durchqueren | Keine | Keine | Privates 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.shEin 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.txtIn 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 verzeichnisRechte 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= dateiDamit erhält der Eigentümer Lesen und Schreiben, die Gruppe Lesen und andere Benutzer keine Rechte. Das entspricht:
-rw-r----- dateiMit einem Pluszeichen kann ein Recht ergänzt werden:
chmod u+x skript.shMit einem Minuszeichen wird ein Recht entfernt:
chmod o-w dateiNumerische Schreibweise
In der numerischen Schreibweise wird jede Dreiergruppe als Oktalzahl angegeben. Die Werte werden addiert:
| Recht | Oktaler Wert | Kombinationsbeispiele |
|---|---|---|
| r | 4 | r-- = 4 |
| w | 2 | -w- = 2 |
| x | 1 | --x = 1 |
| rw- | 6 | 4 + 2 |
| r-x | 5 | 4 + 1 |
| rwx | 7 | 4 + 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 dateiFü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.shEigentümer und Gruppe ändern
Mit chown wird der Eigentümer geändert. Dafür sind in der Regel administrative Rechte erforderlich:
chown benutzer dateiEigentümer und Gruppe können gemeinsam gesetzt werden:
chown benutzer:gruppe dateichgrp ändert nur die Gruppenzuordnung:
chgrp projekt dateiNach 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/unterverzeichnisSetze 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.shDatei 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 -lzeigt Rechte, Eigentümer und Gruppe an.chmodändert Rechte symbolisch oder numerisch.chownändert den Eigentümer,chgrpdie 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.