Linux-Dateiberechtigungen verstehen und verwalten
Linux-Dateiberechtigungen steuern, wie Benutzer mit Dateien und Verzeichnissen interagieren dürfen – also ob sie diese lesen, bearbeiten oder ausführen können. Durch gezielte Vergabe dieser Rechte können Administratoren den Zugriff auf sensible Inhalte kontrollieren und die Systemsicherheit erhöhen.
Diese Anleitung gibt einen praxisnahen Überblick darüber, wie sich Berechtigungen unter Linux verwalten lassen. Dabei lernst du, wie die Berechtigungsmodi funktionieren und wie du mit den Befehlen chmod
und chown
Anpassungen vornimmst.
Arten von Linux-Berechtigungen
Linux kennt drei grundlegende Berechtigungstypen: Lesen, Schreiben und Ausführen – abgekürzt als RWX. Diese legen fest, was ein Benutzer mit einer Datei oder einem Verzeichnis tun darf:
- Lesen (r): Ermöglicht das Anzeigen des Inhalts einer Datei oder das Auflisten von Verzeichnisinhalten.
- Schreiben (w): Erlaubt das Ändern, Hinzufügen, Löschen oder Umbenennen von Dateien.
- Ausführen (x): Gestattet das Starten einer Datei oder den Zugriff auf Verzeichnisse.
Diese Rechte gelten jeweils für drei Benutzerklassen:
- Eigentümer: Der Benutzer, dem die Datei oder das Verzeichnis gehört.
- Gruppe: Die mit der Datei oder dem Verzeichnis verknüpfte Benutzergruppe.
- Andere: Alle übrigen Benutzer im System.
Wichtig: Wenn ein Benutzer sowohl Eigentümer als auch Gruppenmitglied ist, gelten ausschließlich die Eigentümerrechte. Hat der Eigentümer beispielsweise nur Leserechte, kann er die Datei nicht bearbeiten oder ausführen – selbst wenn die Gruppe volle Rechte besitzt.
Um einem Benutzer Gruppenrechte zuzuweisen, kannst du ihn mit den Befehlen usermod
oder gpasswd
zur entsprechenden Gruppe hinzufügen.
Wie Linux Berechtigungen anzeigt
Die Berechtigungen von Dateien und Verzeichnissen werden in einer Zeichenkette mit zehn Stellen dargestellt. Mit folgendem Befehl kannst du sie anzeigen lassen:
ls -l
Die Ausgabe beginnt mit einem Zeichen für den Dateityp, gefolgt von drei Gruppen mit jeweils drei Zeichen – für den Eigentümer, die Gruppe und andere Benutzer:
- –: Normale Datei
- d: Verzeichnis
- l: Symbolischer Link
- b: Blockgerät (z. B. Festplatten)
- c: Zeichengerät (z. B. Terminals)
- p: Named Pipe
- s: Socket
- D: Door
Die restlichen neun Zeichen stehen für die Berechtigungen in dieser Reihenfolge:
- Eigentümer: Erste drei Zeichen
- Gruppe: Mittlere drei Zeichen
- Andere: Letzte drei Zeichen
Beispiel:
drwxrw-r-- example.com
So lässt sich die Ausgabe interpretieren:
- d:
example.com
ist ein Verzeichnis. - rwx: Der Eigentümer hat Lese-, Schreib- und Ausführungsrechte.
- rw-: Die Gruppe darf lesen und schreiben, aber nicht ausführen.
- r–: Andere Benutzer haben nur Leserechte.
So berechnest du Dateiberechtigungen unter Linux
In Linux werden Berechtigungen für Dateien und Verzeichnisse durch binäre Werte dargestellt. Jede Art von Berechtigung hat eine eigene Binär- und Zahlenzuordnung:
Berechtigung | Binär | Wert |
---|---|---|
Lesen (r) | 100 | 4 |
Schreiben (w) | 010 | 2 |
Ausführen (x) | 001 | 1 |
Keine (-) | 000 | 0 |
Kombinierte Berechtigungen im Überblick:
- Lesen + Schreiben: 4 + 2 = 6 (Binär: 110, Symbol: rw-)
- Lesen + Ausführen: 4 + 1 = 5 (Binär: 101, Symbol: r-x)
- Schreiben + Ausführen: 2 + 1 = 3 (Binär: 011, Symbol: -wx)
- Alle Rechte: 4 + 2 + 1 = 7 (Binär: 111, Symbol: rwx)
Gängige Linux-Berechtigungen erklärt
Details zur Berechtigung 644
Benutzerklasse | Lesen (r) | Schreiben (w) | Ausführen (x) | Keine (-) | Gesamtwert |
---|---|---|---|---|---|
Eigentümer (u) | 4 | 2 | 0 | 0 | 6 |
Gruppe (g) | 4 | 0 | 0 | 0 | 4 |
Andere (o) | 4 | 0 | 0 | 0 | 4 |
Mit der Einstellung 644 kann der Eigentümer die Datei lesen und bearbeiten. Gruppenmitglieder und andere Benutzer haben ausschließlich Leserechte.
Details zur Berechtigung 755
Benutzerklasse | Lesen (r) | Schreiben (w) | Ausführen (x) | Keine (-) | Gesamtwert |
---|---|---|---|---|---|
Eigentümer (u) | 4 | 2 | 1 | 0 | 7 |
Gruppe (g) | 4 | 0 | 1 | 0 | 5 |
Andere (o) | 4 | 0 | 1 | 0 | 5 |
Die 755-Berechtigung erlaubt dem Eigentümer vollen Zugriff, während Gruppe und andere Benutzer lediglich lesen und ausführen dürfen.
Details zur Berechtigung 777
Benutzerklasse | Lesen (r) | Schreiben (w) | Ausführen (x) | Keine (-) | Gesamtwert |
---|---|---|---|---|---|
Eigentümer (u) | 4 | 2 | 1 | 0 | 7 |
Gruppe (g) | 4 | 2 | 1 | 0 | 7 |
Andere (o) | 4 | 2 | 1 | 0 | 7 |
Mit 777 erhalten alle – Eigentümer, Gruppe und andere Benutzer – vollständigen Zugriff inklusive Lesen, Schreiben und Ausführen.
Hinweis zu Root-Rechten
Der Root-Nutzer kann alle gesetzten Berechtigungen ignorieren. Wird sudo
verwendet, erfolgt der Zugriff mit Administratorrechten – unabhängig von den Dateiberechtigungen.
So überprüfst du Berechtigungen von Dateien und Verzeichnissen unter Linux
Der Befehl ls -l
zeigt unter Linux ausführliche Informationen über die Berechtigungen, den Eigentümer, die Gruppe, die Dateigröße und das Datum der letzten Änderung einer Datei oder eines Verzeichnisses an. Möchtest du die Rechte eines Verzeichnisses selbst anzeigen – und nicht dessen Inhalt – kannst du die Option -d
verwenden.
Im Folgenden findest du die Schritte, um die Dateiberechtigungen mit dem Befehl ls
zu prüfen:
Beispieldatei und -verzeichnis erstellen
Erstelle zunächst eine Testdatei file.txt
und ein Testverzeichnis /var/www/html
:
$ touch file.txt && sudo mkdir /var/www/html
Dateiberechtigungen anzeigen
Um die Berechtigungen der Datei zu überprüfen, führe folgenden Befehl aus:
$ ls -l file.txt
Die Ausgabe könnte wie folgt aussehen:
-rwxr-xr-x 1 user group 1024 Jan 1 12:00 file.txt
Die Ausgabe erklärt sich folgendermaßen:
- –:
file.txt
ist eine reguläre Datei. - rwx: Der Eigentümer hat Lese-, Schreib- und Ausführungsrechte.
- r-x: Die Gruppe darf lesen und ausführen.
- r-x: Andere Benutzer dürfen ebenfalls lesen und ausführen.
Verzeichnisberechtigungen anzeigen
Verwende ls -ld
, um die Rechte des Verzeichnisses selbst anzuzeigen:
$ ls -ld /var/www/html
Beispielausgabe:
drwxr-xr-x 2 user group 4096 Jan 1 12:30 /var/www/html
Die Ausgabe lässt sich wie folgt interpretieren:
- d:
/var/www/html
ist ein Verzeichnis. - rwx: Der Eigentümer darf lesen, schreiben und ausführen.
- r-x: Die Gruppe hat Lese- und Ausführungsrechte.
- r-x: Andere Benutzer dürfen ebenfalls lesen und ausführen.
So änderst du Dateiberechtigungen unter Linux
Mit dem Befehl chmod
kannst du unter Linux die Rechte von Dateien und Verzeichnissen anpassen. Dabei stehen zwei Modi zur Verfügung: der numerische und der symbolische Modus. Nachfolgend findest du Schritt-für-Schritt-Anleitungen für beide Varianten.
Allgemeine Syntax von chmod
So sieht der grundsätzliche Aufbau des Befehls aus:
$ chmod [Berechtigungen] [Datei oder Verzeichnis]
Berechtigungen im numerischen Modus ändern
Im numerischen Modus werden Berechtigungen mit einer dreistelligen Zahl festgelegt. Jede Ziffer steht für die Rechte des Eigentümers, der Gruppe und der anderen Nutzer. Die Ziffer ergibt sich aus der Summe der folgenden Werte:
- Lesen (r): 4
- Schreiben (w): 2
- Ausführen (x): 1
- Kein Zugriff (-): 0
Beispiele:
file.txt
auf Modus 755 setzen:
$ chmod 755 file.txt
Damit erhält der Eigentümer volle Rechte, während Gruppe und andere nur Lese- und Ausführungsrechte haben.
/var/www/html
auf Modus 755 setzen:
$ sudo chmod 755 /var/www/html
Der Eigentümer erhält vollen Zugriff, andere Nutzer dürfen lesen und ausführen.
Berechtigungen rekursiv auf alle Inhalte anwenden:
$ sudo chmod -R 755 /var/www/html
Alle Dateien und Unterverzeichnisse erhalten 755-Rechte. Nur der Eigentümer darf Inhalte verändern.
Berechtigungen im symbolischen Modus ändern
Im symbolischen Modus werden Buchstaben zur Darstellung von Benutzergruppen und Aktionen verwendet:
- u: Eigentümer
- g: Gruppe
- o: Andere Benutzer
- a: Alle (Eigentümer, Gruppe und Andere)
Folgende Operatoren definieren die Aktion:
- +: Rechte hinzufügen
- -: Rechte entfernen
- =: Rechte explizit setzen (alle vorhandenen überschreiben)
Syntax im symbolischen Modus:
$ chmod [Benutzerklasse][Operator][Rechte] [Datei oder Verzeichnis]
Beispiele:
Volle Rechte für den Eigentümer von file.txt
gewähren:
$ chmod u+rwx file.txt
Ausführungsrecht für die Gruppe von /var/www/html
entfernen:
$ sudo chmod g-x /var/www/html
Leserecht für alle auf file.txt
setzen:
$ chmod a+r file.txt
Eigentümerrechte auf nur Lesen beschränken:
$ chmod u=r file.txt
Rechte rekursiv für alle Benutzer setzen (Lesen und Ausführen):
$ sudo chmod -R a+rx /var/www/html
Damit erhalten alle Nutzer Leserechte und können die Verzeichnisse durchlaufen.
Lese- und Schreibrechte gleichzeitig für Eigentümer und Gruppe erteilen:
$ chmod ug+rw file.txt
Unterschiedliche Rechte für mehrere Benutzerklassen in einem Befehl setzen:
$ chmod u+rwx,g+w,o+x file.txt
Das gewährt dem Eigentümer alle Rechte, der Gruppe Schreibrechte und anderen Nutzern Ausführungsrechte für file.txt
.
So setzt du spezielle Berechtigungen unter Linux: Sticky Bit, SUID und SGID
Besondere Berechtigungsbits wie das Sticky Bit, SUID (Set User ID) und SGID (Set Group ID) sind wichtig, um den Zugriff auf Dateien und Verzeichnisse in Mehrbenutzerumgebungen gezielt zu steuern. Sie bieten erweiterte Kontrolle über das Verhalten beim Zugriff auf bestimmte Ressourcen.
Sticky Bit für Verzeichnisschutz
Das Sticky Bit wird ausschließlich auf Verzeichnisse angewendet. Es bewirkt, dass nur der Eigentümer eines darin befindlichen Elements dieses umbenennen, verschieben oder löschen darf – unabhängig von den Verzeichnisrechten. Es lässt sich sowohl symbolisch als auch numerisch setzen.
Sticky Bit symbolisch aktivieren:
$ sudo chmod +t /var/www/html
Sticky Bit mit 755-Rechten numerisch setzen:
$ sudo chmod 1755 /var/www/html
Bedeutung der Ziffern:
- 1: Aktiviert das Sticky Bit
- 7: Vollzugriff für den Eigentümer
- 5: Lese- und Ausführungsrechte für Gruppe und andere
Überprüfen, ob das Sticky Bit aktiv ist:
$ ls -ld /var/www/html
Beispielausgabe:
drwxr-xr-t 2 user group 4096 Jan 1 12:00 /var/www/html
Das t
am Ende zeigt, dass das Sticky Bit aktiv ist.
SUID – Datei mit Rechten des Eigentümers ausführen
Mit SUID wird eine Datei beim Ausführen nicht mit den Rechten des ausführenden Nutzers, sondern mit denen des Dateieigentümers ausgeführt. Das ist besonders bei Programmen hilfreich, die erhöhte Rechte benötigen.
Beispiel: Skript-Datei erstellen:
$ touch hello.sh
SUID symbolisch aktivieren:
$ chmod u+s hello.sh
SUID numerisch aktivieren:
$ chmod 4755 hello.sh
Bedeutung:
- 4: Aktiviert SUID
- 7: Volle Rechte für den Eigentümer
- 5: Lesen und Ausführen für Gruppe und andere
Überprüfen, ob SUID gesetzt ist:
$ ls -l hello.sh
Beispielausgabe:
-rwsr-xr-x 1 root root 1024 Jan 15 20:43 hello.sh
Das s
im Eigentümerabschnitt zeigt, dass SUID aktiv ist.
SGID – Datei mit Gruppenrechten ausführen
Mit SGID wird eine Datei oder ein Verzeichnis mit den Rechten der zugeordneten Gruppe ausgeführt. Bei Verzeichnissen erben neue Dateien automatisch die Gruppen-ID des übergeordneten Verzeichnisses.
SGID auf Datei anwenden:
$ sudo chmod g+s hello.sh
SGID auf Verzeichnis anwenden:
$ sudo chmod g+s /var/www/html
SGID und 755 gemeinsam numerisch setzen:
$ sudo chmod 2755 hello.sh
Bedeutung:
- 2: Aktiviert SGID
- 7: Volle Rechte für Eigentümer
- 5: Lesen und Ausführen für Gruppe und andere
Prüfen, ob SGID aktiv ist:
$ ls -l hello.sh
Beispielausgabe:
-rwxr-sr-x 1 user group 123456 Jan 1 12:00 hello.sh
Das s
im Gruppenbereich zeigt, dass SGID aktiv ist.
SGID auf Verzeichnis prüfen:
$ ls -ld /var/www/html
Beispielausgabe:
drwxr-sr-x 2 user group 4096 Jan 1 12:00 /var/www/html
Das s
im Gruppenbereich zeigt, dass das SGID-Bit auf dem Verzeichnis aktiv ist.
So änderst du den Eigentümer von Dateien und Verzeichnissen unter Linux
Mit dem Befehl chown
kannst du unter Linux den Benutzer- und Gruppeneigentümer von Dateien und Verzeichnissen festlegen oder anpassen. Im Folgenden findest du eine Übersicht, wie du Eigentumsrechte korrekt verwaltest.
Grundlegende Syntax von chown
Die allgemeine Syntax zur Änderung des Besitzers und der Gruppe lautet:
$ chown [Optionen] benutzer:gruppe [Datei/Verzeichnis]
Beispiele zur Eigentumsänderung
Setze linuxuser
als neuen Eigentümer von file.txt
, ohne die Gruppe zu ändern:
$ sudo chown linuxuser file.txt
Ändere nur die Gruppenzugehörigkeit von /var/www/html
auf www-data
:
$ sudo chown :www-data /var/www/html
Ändere sowohl den Benutzer als auch die Gruppe des Verzeichnisses auf www-data
:
$ sudo chown www-data:www-data /var/www/html
Wende die Änderung rekursiv auf alle Inhalte im Verzeichnis an:
$ sudo chown -R www-data:www-data /var/www/html
Kopiere die Eigentumsrechte von /var/www/html
auf file.txt
mit der Option --reference
:
$ sudo chown --reference=/var/www/html file.txt
Eigentümerinformationen prüfen
Zeige den aktuellen Eigentümer von file.txt
und dem Verzeichnis /var/www/html
an:
$ ls -l file.txt && ls -ld /var/www/html
Beispielausgabe:
-rwxr-xr-- 1 www-data www-data 1024 Jan 1 12:00 file.txt
drwxr-xr-x 2 www-data www-data 4096 Jan 1 12:30 /var/www/html
Fazit
Mit den Befehlen chmod
und chown
hast du umfassende Kontrolle über die Rechtevergabe auf deinem Linux-System. Diese Rechte bestimmen, wie Benutzer mit Dateien und Verzeichnissen interagieren dürfen – ob sie sie lesen, ändern oder ausführen dürfen. Für weiterführende Informationen kannst du die Handbuchseiten aufrufen:
$ man chown
$ man chmod