Zum Inhalt

Dateisystem, Benutzer und Rechte

Linux organisiert Dateien in einem gemeinsamen Verzeichnisbaum. Benutzerkonten, Gruppen und Zugriffsrechte bestimmen, wer Dateien lesen, verändern oder ausführen darf. Auf dieser Seite lernst Du die wichtigsten Verzeichnisse und die grundlegenden Berechtigungen kennen.

Der Linux-Verzeichnisbaum

Das Wurzelverzeichnis / ist der Ausgangspunkt aller absoluten Pfade. Weitere Dateisysteme, beispielsweise auf zusätzlichen Datenträgern, werden an Einhängepunkten in diesen Baum eingebunden.

Verzeichnis Aufgabe
/bin Grundlegende Benutzerprogramme; auf vielen aktuellen Systemen ein symbolischer Link auf /usr/bin
/etc Systemweite Konfigurationsdateien
/home Üblicher Speicherort für persönliche Verzeichnisse normaler Benutzer
/var Veränderliche Daten, beispielsweise Protokolle, Warteschlangen und Anwendungsdaten
/usr Installierte Programme, Bibliotheken und gemeinsam genutzte Daten; kein Verzeichnis für persönliche Benutzerdateien
/lib Grundlegende Bibliotheken und gegebenenfalls Kernelmodule; auf vielen Systemen ein Link auf /usr/lib
/mnt Üblicher Einhängepunkt für vorübergehend manuell eingebundene Dateisysteme
/dev Gerätedateien, über die Programme auf Geräte und bestimmte Kernel-Schnittstellen zugreifen
/root Persönliches Verzeichnis des Administratorkontos root
/tmp Temporäre Dateien; eine dauerhafte Aufbewahrung ist nicht vorgesehen
/proc Virtuelles Dateisystem mit Informationen zu Prozessen und zum Kernel
/sys Virtuelles Dateisystem mit Informationen und Schnittstellen zu Geräten und Kernel-Subsystemen
/run Flüchtige Laufzeitdaten seit dem Systemstart

Nicht jedes Benutzerkonto hat ein persönliches Verzeichnis unter /home. Das gilt insbesondere für Systemkonten und root. Die genaue Verzeichnisaufteilung hängt von der Distribution ab.

Benutzer, Gruppen und Eigentümer

Jede Datei und jedes Verzeichnis hat einen Eigentümer und eine zugeordnete Gruppe. Das klassische Berechtigungsmodell unterscheidet drei Klassen:

Kürzel Klasse Bedeutung
u Eigentümer Benutzerkonto, dem die Datei gehört
g Gruppe Benutzer, die der zugeordneten Gruppe angehören
o Andere Benutzer, die weder Eigentümer noch Mitglied dieser Gruppe sind

Ohne zusätzliche ACLs gilt die jeweils passende Klasse: Für den Eigentümer gelten die Eigentümerrechte, sonst gegebenenfalls die Gruppenrechte, andernfalls die Rechte für andere. Die Rechte werden nicht einfach aus allen drei Klassen addiert.

Mit id zeigst Du Deine Benutzer- und Gruppenzugehörigkeiten an. Administratorrechte werden üblicherweise gezielt über sudo verwendet. root kann viele gewöhnliche Dateirechte umgehen; zusätzliche Einschränkungen wie schreibgeschützte Dateisysteme oder Sicherheitsrichtlinien können trotzdem gelten.

Benutzer und Gruppen sind nicht mit einem eigenen rollenbasierten Berechtigungsmodell gleichzusetzen. Du kannst Gruppen jedoch organisatorisch für Aufgaben wie die gemeinsame Arbeit an Projektdateien einsetzen.

Berechtigungen anzeigen

ls -l datei.txt
ls -ld projekt

ls -l zeigt bei einem Verzeichnis normalerweise dessen Einträge an. Mit ls -ld betrachtest Du die Eigenschaften des Verzeichnisses selbst.

Beispiel für ein Verzeichnis:

drwxr-x---
│└─┬─┘└┬┘└┬┘
│  │   │  └── Andere: keine Rechte
│  │   └───── Gruppe: lesen und durchsuchen
│  └───────── Eigentümer: lesen, schreiben und durchsuchen
└──────────── Dateityp: Verzeichnis

Das erste Zeichen beschreibt den Dateityp: d steht für ein Verzeichnis, - für eine reguläre Datei und l für einen symbolischen Link. Weitere Dateitypen sind möglich.

Danach folgen jeweils drei Positionen für Eigentümer, Gruppe und andere. r, w und x kennzeichnen gesetzte Rechte; - bedeutet, dass das jeweilige Recht fehlt.

Datei- und Verzeichnisrechte unterscheiden

Recht Bei einer regulären Datei Bei einem Verzeichnis
r – Lesen Dateiinhalt lesen Namen der enthaltenen Einträge auflisten
w – Schreiben Dateiinhalt verändern Zusammen mit x Einträge anlegen, löschen oder umbenennen, vorbehaltlich weiterer Einschränkungen
x – Ausführen/Durchsuchen Datei als Programm ausführen, sofern Format und weitere Voraussetzungen passen Verzeichnis betreten und auf bekannte Eintragsnamen zugreifen

Zum üblichen Anzeigen von Dateiinformationen innerhalb eines Verzeichnisses benötigst Du neben r auch x. Beim Zugriff über einen Pfad brauchst Du das Durchsuchungsrecht für die beteiligten übergeordneten Verzeichnisse.

Wichtig: Schreibrecht auf ein Verzeichnis erlaubt nicht automatisch, die Inhalte der darin liegenden Dateien zu verändern. Dafür zählen die Dateirechte. Umgekehrt kann eine schreibgeschützte Datei grundsätzlich gelöscht werden, wenn die erforderlichen Rechte auf dem übergeordneten Verzeichnis vorhanden sind und keine zusätzliche Einschränkung wie das Sticky-Bit entgegensteht.

Rechte mit chmod ändern

Als Eigentümer kannst Du die Rechte Deiner Dateien ändern. Für fremde Dateien benötigst Du normalerweise Administratorrechte.

Befehl Wirkung
chmod 640 datei.txt Eigentümer: lesen/schreiben; Gruppe: lesen; andere: keine Rechte
chmod 750 projekt Eigentümer: alle drei Rechte; Gruppe: lesen/durchsuchen; andere: keine Rechte
chmod u+x skript.sh Fügt dem Eigentümer das Ausführungsrecht hinzu
chmod g+w datei.txt Fügt der Gruppe das Schreibrecht hinzu
chmod o-rwx datei.txt Entfernt alle drei Rechte für andere

Bei der numerischen Schreibweise steht r für 4, w für 2 und x für 1. Die Werte werden je Klasse addiert: 6 = 4 + 2 bedeutet lesen und schreiben, 5 = 4 + 1 lesen und ausführen beziehungsweise durchsuchen.

640 und 750 sind Beispiele für unterschiedliche Freigaben, keine universellen Vorgaben. Eine normale Textdatei benötigt meist kein Ausführungsrecht. Verwende daher nicht pauschal dieselben Rechte für Dateien und Verzeichnisse.

Eigentümer und Gruppe ändern

Befehl Wirkung
sudo chown benutzer datei.txt Ändert den Eigentümer
sudo chown benutzer:gruppe datei.txt Ändert Eigentümer und Gruppe
chgrp gruppe datei.txt Ändert die zugeordnete Gruppe, sofern Du Eigentümer und Mitglied der Zielgruppe bist

Ersetze benutzer und gruppe durch vorhandene Namen. Für einen Gruppenwechsel außerhalb Deiner erlaubten Gruppenzugehörigkeiten sind normalerweise Administratorrechte erforderlich.

Sonderrechte und zusätzliche Sicherheitsmechanismen

Mechanismus Bedeutung
Setgid auf Verzeichnissen Neue Einträge übernehmen die Gruppe des Verzeichnisses; allein dadurch erhalten sie noch keine gemeinsamen Schreibrechte
Sticky-Bit auf Verzeichnissen Beschränkt das Löschen und Umbenennen fremder Einträge, beispielsweise in /tmp
Setuid/Setgid auf ausführbaren Dateien Kann beim Programmstart die effektive Benutzer- beziehungsweise Gruppen-ID ändern; die Wirkung hängt vom System und den Ausführungsbedingungen ab
ACLs Ergänzen Zugriffsrechte für zusätzliche Benutzer und Gruppen; Werkzeuge sind getfacl und setfacl
SELinux/AppArmor Zusätzliche Sicherheitsrichtlinien, die Zugriffe unabhängig von gewöhnlichen Dateirechten einschränken können

chmod, chown und chgrp ersetzen keine Werkzeuge zur Verwaltung von ACLs oder SELinux-/AppArmor-Richtlinien. Das Sticky-Bit erlaubt bei einem entsprechend geschützten Verzeichnis normalerweise nur dem Eigentümer des Eintrags, dem Eigentümer des Verzeichnisses oder einem ausreichend privilegierten Prozess, den Eintrag zu löschen oder umzubenennen.

Kleine Übung

Lege für die Übung ein neues Verzeichnis mit einem noch nicht verwendeten Namen an:

mkdir rechte-uebung
cd rechte-uebung
touch notizen.txt
chmod 640 notizen.txt
ls -l notizen.txt

Die Rechte der Datei sollten nun als -rw-r----- erscheinen. Vergleiche anschließend die Eigenschaften des aktuellen Verzeichnisses mit ls -ld .. Damit erkennst Du den Unterschied zwischen den Rechten der Datei und denen ihres übergeordneten Verzeichnisses.

Weitere Informationen findest Du im GNU-Handbuch zu Dateirechten und im Filesystem Hierarchy Standard.