Linux-Zugriffsrechte: Lesen, Schreiben und Ausführen
Linux-Dateirechte verständlich erklärt: r, w und x für Dateien und Verzeichnisse, Benutzerklassen, ls -l und chmod mit symbolischer und numerischer Schreibweise.
Zugriffsrechte sind Regeln, die festlegen, wer Dateien und Verzeichnisse lesen, verändern, ausführen oder durchsuchen darf. Linux trennt diese Rechte nach drei Benutzerklassen: Eigentümer, Gruppe und andere.
Damit lassen sich private Dateien einzelner Benutzer schützen. Ebenso werden wichtige Systemdateien vor unbefugten Änderungen oder dem Starten ungeeigneter Dateien geschützt.
Die drei Berechtigungsarten
Linux verwendet drei grundlegende Berechtigungsbits, auch Permission Bits oder Dateimodus genannt:
| Berechtigung | Symbol | Bei Datei | Bei Verzeichnis |
|---|---|---|---|
| Lesen | r | Dateiinhalt anzeigen oder lesen | Einträge des Verzeichnisses auflisten |
| Schreiben | w | Dateiinhalt ändern | Einträge anlegen, umbenennen oder löschen |
| Ausführen | x | Datei oder Skript starten | Verzeichnis betreten, durchsuchen und auf bekannte Namen zugreifen |
Fehlt eine Berechtigung, steht an ihrer Stelle ein Bindestrich. r-- bedeutet daher: Lesen ist erlaubt, Schreiben und Ausführen sind nicht erlaubt.
Dateien lesen und ausführen sind verschiedene Vorgänge
Das Leserecht r erlaubt, den Inhalt einer Datei zu betrachten. Das Ausführrecht x erlaubt dagegen, eine ausführbare Datei oder ein Skript als Programm zu starten. Eine Textdatei kann also lesbar sein, ohne ausführbar zu sein. Umgekehrt ist eine Datei ohne Leserecht nicht automatisch vor ihrer Ausführung geschützt; ihre Ausführbarkeit hängt vom Ausführrecht und weiteren Voraussetzungen ab.
Rechte bei Verzeichnissen
Bei Verzeichnissen haben r, w und x eine andere Bedeutung als bei normalen Dateien:
r: Die Namen der enthaltenen Einträge dürfen aufgelistet werden.w: Einträge dürfen angelegt, umbenannt oder gelöscht werden. In der Praxis wird dafür normalerweise zusätzlichxbenötigt.x: Das Verzeichnis darf betreten und durchsucht werden. Bei bekanntem Namen kann auf einen Eintrag zugegriffen werden, auch wennrfehlt.
| Kombination | Mögliche Aktion | Praktische Auswirkung |
|---|---|---|
r ohne x | Verzeichnisinhalt theoretisch auflisten | Namen können sichtbar sein, der Zugriff auf die Einträge ist jedoch meist eingeschränkt, weil das Durchsuchen fehlt. |
x ohne r | Bekannte Pfade durchsuchen | Einträge lassen sich unter Umständen über bekannte Namen erreichen, eine normale Auflistung ist nicht möglich. |
w und x | Einträge verwalten | Dateien und Unterverzeichnisse können angelegt, umbenannt oder gelöscht werden, ohne dass die Namen vorher aufgelistet werden dürfen. |
rwx | Vollständiger Verzeichniszugriff | Auflisten, betreten und Verwalten von Einträgen ist möglich. |
Wichtig: Das Löschen einer Datei hängt im Regelfall von den Rechten des übergeordneten Verzeichnisses ab, nicht vom Schreibrecht der Datei selbst. Wer im Verzeichnis schreiben und es durchsuchen darf, kann dort häufig eine Datei löschen, auch wenn diese Datei selbst nicht beschreibbar ist.
Beispiele für Verzeichnisse
drwx------ beschreibt ein privates Verzeichnis. Nur der Eigentümer darf es auflisten, betreten und darin Einträge verwalten.
d--x--x--x erlaubt den Benutzerklassen jeweils das Durchsuchen, aber nicht das Auflisten. Wer einen Dateinamen kennt, kann unter Umständen auf diesen Eintrag zugreifen.
Die drei Benutzerklassen
| Klasse | Kürzel | Für wen gelten die Rechte? |
|---|---|---|
| Eigentümer oder Benutzer | u | Für den Dateieigentümer. |
| Gruppe | g | Für Benutzer, die Mitglied der zugeordneten Dateigruppe sind. |
| Andere | o | Für alle übrigen lokalen Benutzer. |
Die übliche Reihenfolge lautet Benutzer, Gruppe, andere. Ein Benutzer wird beim Prüfen der Rechte grundsätzlich zuerst als Eigentümer eingeordnet. Ist er nicht Eigentümer, wird die Gruppenklasse geprüft; andernfalls gilt die Klasse „andere“.
Eine Rechteanzeige lesen
Der Befehl ls -l zeigt die Rechte im Langformat an. Eine typische Anzeige kann so aussehen:
-rwxrw---- 1 anna entwickler 1280 Aug 18 10:30 start.sh
Die erste Zeichenposition kennzeichnet den Dateityp. Ein Bindestrich - steht für eine normale Datei, ein d für ein Verzeichnis. Danach folgen neun Zeichen in drei Dreiergruppen:
- rwx rw- ---
- Das erste Zeichen
-ist die Dateitypkennzeichnung. rwxsind die Rechte des Eigentümers.rw-sind die Rechte der Gruppe.---sind die Rechte für andere Benutzer.
| Beispielanzeige | Benutzer | Gruppe | Andere | Bedeutung |
|---|---|---|---|---|
-rwxrw---- | rwx | rw- | --- | Der Eigentümer darf lesen, schreiben und ausführen. Die Gruppe darf lesen und schreiben. Andere haben keinen Zugriff. |
drwxr-x--- | rwx | r-x | --- | Der Eigentümer hat vollständigen Zugriff. Die Gruppe darf auflisten und durchsuchen, aber keine Einträge verwalten. Andere haben keinen Zugriff. |
Rechte mit ls -l prüfen
ls -l ist das wichtigste Grundwerkzeug zum Prüfen. Es zeigt neben dem Dateityp und den Berechtigungsbits auch Eigentümer und Gruppe:
ls -l DATEI_ODER_VERZEICHNIS
Beispiel:
$ ls -l privat.txt
-rw------- 1 anna entwickler 42 Aug 18 10:30 privat.txt
In diesem Beispiel kann anna die Datei lesen und ändern. Die Gruppe entwickler und alle anderen Benutzer haben keine der drei Standardberechtigungen.
Berechtigungen mit chmod ändern
chmod ist das Werkzeug zum Ändern von Berechtigungen. Die symbolische Schreibweise benennt zuerst die Klasse, danach die Aktion und anschließend das Recht:
u: Eigentümer,g: Gruppe,o: andere+: Recht hinzufügen,-: Recht entziehen,=: Rechte exakt setzenr: lesen,w: schreiben,x: ausführen
chmod u+x skript.sh
chmod g+rw datei.txt
chmod o-rwx privat.txt
Das erste Beispiel gibt dem Eigentümer das Ausführrecht. Das zweite gibt der Gruppe Lese- und Schreibrechte. Das dritte entzieht anderen Benutzern alle drei Standardrechte.
Numerische Schreibweise
Als kompakte Alternative können Rechte mit Ziffern angegeben werden:
r = 4w = 2x = 1
Die Werte werden je Klasse addiert. 7 bedeutet also rwx, 6 bedeutet rw-, 5 bedeutet r-x und 0 bedeutet ---.
chmod 760 datei
chmod 700 privates-verzeichnis
760 setzt Eigentümer auf rwx, die Gruppe auf rw- und andere auf ---. 700 beschränkt ein Verzeichnis auf den Eigentümer: Dieser darf lesen, schreiben und durchsuchen.
Skript ausführbar machen
- Aktuelle Rechte prüfen.
- Nur bei einem vertrauenswürdigen Skript das Ausführrecht setzen.
- Das Skript anschließend über seinen Pfad starten.
ls -l skript.sh
chmod u+x skript.sh
./skript.sh
Das gesetzte x allein garantiert nicht, dass ein Skript korrekt läuft. Der Inhalt, das Dateiformat und gegebenenfalls eine passende Interpreter-Zeile müssen ebenfalls stimmen.
Gemeinsam genutzte Datei
Eine Datei für eine Arbeitsgruppe kann beispielsweise mit chmod 660 datei.txt auf -rw-rw---- gesetzt werden. Eigentümer und Gruppe dürfen lesen und schreiben; andere Benutzer erhalten keinen Zugriff. Voraussetzung ist, dass die gewünschte Gruppe als Dateigruppe eingetragen ist.
Eigentum und Berechtigungen abgrenzen
Eigentümer und Gruppe sind getrennte Metadaten einer Datei. Die Rechte legen fest, was der Eigentümer, Mitglieder der Gruppe und andere Benutzer tun dürfen. Das Ändern von Rechten ändert nicht automatisch den Eigentümer oder die Gruppe.
Eigentümerwechsel und Gruppenwechsel sind eigene Verwaltungsaufgaben. Sie werden beispielsweise mit Werkzeugen wie chown und chgrp durchgeführt und benötigen je nach Situation erhöhte Rechte. Details zum Eigentum behandelt der Artikel Eigentümer der Datei; für Änderungen siehe Eigentümer von Dateien ändern.
Fehler systematisch untersuchen
Datei lässt sich trotz sichtbarem Inhalt nicht starten
- Mit
ls -lprüfen, ob für die passende Benutzerklasse einxgesetzt ist. - Bei einem vertrauenswürdigen Skript gegebenenfalls
chmod u+x skript.shverwenden. - Bei Skripten zusätzlich Interpreter-Zeile und Dateiformat prüfen.
Datei kann nicht gelöscht werden
Prüfe die Rechte des übergeordneten Verzeichnisses, nicht nur die Rechte der Datei. Zum Löschen sind dort normalerweise Schreib- und Ausführrechte erforderlich. Außerdem müssen Gruppenmitgliedschaft und die passende Rechteklasse stimmen.
Verzeichnis kann betreten, aber nicht aufgelistet werden
Wahrscheinlich besitzt die betreffende Klasse x, aber kein r. Das Durchsuchen ist möglich, eine normale Verzeichnisauflistung jedoch nicht. Bekannte Dateinamen können unter Umständen weiterhin erreichbar sein.
chmod meldet fehlende Berechtigung
Prüfe mit ls -l, wem die Datei gehört und welcher Gruppe sie zugeordnet ist. Normalerweise darf ein Benutzer nur die Rechte eigener Dateien ändern. Für fremde Dateien ist in der Regel der Eigentümer oder ein Administrator erforderlich.
Merksätze für die Praxis
r,wundxwerden für Eigentümer, Gruppe und andere jeweils getrennt gesetzt.- Bei Dateien bedeutet
rlesen,wändern undxstarten. - Bei Verzeichnissen bedeutet
rauflisten,wEinträge verwalten undxbetreten beziehungsweise durchsuchen. - Das erste Zeichen von
ls -lbezeichnet den Dateityp; die folgenden neun Zeichen sind die drei Rechteblöcke. - Zum sicheren Ändern zuerst prüfen, dann gezielt mit
chmodnur notwendige Rechte setzen.
Eine vertiefende Übersicht zu den einzelnen Permission Bits findest du unter Berechtigungsbits (Permission Bits). Für die Verwaltung gemeinsamer Zugriffe sind außerdem Gruppen in Linux relevant.