Linux-Dateiberechtigungen: Zugriff mit chmod, chown und chgrp verwalten
Unter Linux sind Berechtigungen ein zentraler Bestandteil des Sicherheitskonzepts und der Dateiverwaltung. Sie legen fest, wer auf Dateien und Verzeichnisse zugreifen darf und welche Aktionen dabei erlaubt sind. Wer Berechtigungen lesen und gezielt steuern kann, ist im Vorteil – egal ob Administration, Entwicklung oder tägliche Arbeit auf Linux-Systemen.
Dieses Tutorial führt dich durch das Setzen von Berechtigungen mit dem chmod-Befehl (zum Ändern von Dateimodi), chown (zum Ändern des Dateibesitzers) und chgrp (zum Ändern der Gruppenzugehörigkeit). Wenn du diese Linux-Kommandos sicher beherrschst, kannst du Dateien schützen, saubere Zugriffsregeln umsetzen und das Risiko unbefugter Zugriffe auf sensible Daten in deinen Linux-Umgebungen deutlich reduzieren.
Linux-Berechtigungen verstehen
Linux-Berechtigungen werden über drei Gruppen von Buchstaben oder Zahlen dargestellt. Jede Gruppe steht für eine bestimmte Nutzerklasse. Dieses mehrstufige Berechtigungsmodell ist ein Kernbaustein der Linux-Sicherheit, weil es sehr feingranularen Zugriff auf Dateien und Verzeichnisse ermöglicht.
Die drei Gruppen sind:
- Benutzer (u): Der Besitzer der Datei oder des Verzeichnisses. In der Regel ist das die Person, die es angelegt hat – der Besitz kann aber geändert werden.
- Gruppe (g): Eine Gruppe von Nutzern, die für die Datei oder das Verzeichnis dieselben Rechte teilen. Gruppen erleichtern die Verwaltung, wenn mehrere Personen Zugriff benötigen.
- Andere (o): Alle übrigen Nutzer auf dem System, die weder Besitzer sind noch zur zugewiesenen Gruppe gehören.
Für jede dieser Kategorien kennt Linux drei grundlegende Berechtigungstypen:
- Lesen (r oder 4): Erlaubt das Anzeigen von Dateiinhalten oder das Auflisten von Verzeichnisinhalten.
- Schreiben (w oder 2): Erlaubt das Bearbeiten von Dateiinhalten oder das Erstellen und Löschen von Dateien innerhalb eines Verzeichnisses.
- Ausführen (x oder 1): Erlaubt das Ausführen einer Datei als Programm oder das Betreten/Öffnen eines Verzeichnisses.
Die Ausgabe von ls -l zeigt Berechtigungen als 10-stellige Zeichenkette. Das erste Zeichen beschreibt den Dateityp (z. B. – für eine normale Datei, d für ein Verzeichnis, l für einen symbolischen Link usw.). Die nächsten neun Zeichen sind in drei Dreiergruppen aufgeteilt und stehen für die Rechte von Besitzer, Gruppe und anderen. Jede Dreiergruppe enthält Kombinationen aus:
- r für Leserechte
- w für Schreibrechte
- x für Ausführungsrechte
- – für keine Berechtigung
Beispielsweise lässt sich -rwxr-xr– so aufschlüsseln:
- Das erste Zeichen – bedeutet: normale Datei.
- Die nächsten drei Zeichen rwx sind die Rechte des Besitzers: lesen, schreiben, ausführen.
- Die nächsten drei Zeichen r-x sind die Rechte der Gruppe: lesen und ausführen.
- Die letzten drei Zeichen r– sind die Rechte für andere: nur lesen.
Wer diese Zeichenkette korrekt interpretieren kann, kann Berechtigungen in Linux-Systemen zuverlässig und sauber steuern.
Hinweis: Halte dir deine am häufigsten genutzten Linux-Befehle griffbereit – mit unserem Cheat Sheet für 50+ Linux-Kommandos.
Numerische Darstellung von Berechtigungen
Linux-Berechtigungen lassen sich auch als numerische (oktale) Schreibweise angeben. Damit setzt du Besitzer-, Gruppen- und Andere-Rechte kompakt in einem Schritt:
- 4 steht für Lesen
- 2 steht für Schreiben
- 1 steht für Ausführen
Diese Werte werden addiert, um Kombinationen zu bilden:
- 7 (4+2+1) = lesen, schreiben, ausführen
- 6 (4+2) = lesen, schreiben
- 5 (4+1) = lesen, ausführen
- 4 = nur lesen
- 3 (2+1) = schreiben, ausführen
- 2 = nur schreiben
- 1 = nur ausführen
- 0 = keine Rechte
Zum Beispiel setzt chmod 755 Folgendes:
- Besitzer: 7 (lesen, schreiben, ausführen)
- Gruppe: 5 (lesen, ausführen)
- Andere: 5 (lesen, ausführen)
Diese numerische Methode ist besonders praktisch, weil sich auch komplexe Rechte schnell über eine dreistellige Zahl setzen lassen.
Spezielle Berechtigungen
Zusätzlich zu Lesen, Schreiben und Ausführen unterstützt Linux spezielle Permission-Bits, die noch mehr Kontrolle ermöglichen:
SUID (Set User ID)
Wenn SUID auf einer ausführbaren Datei aktiv ist, läuft sie mit den Rechten des Dateibesitzers – nicht mit den Rechten der Person, die sie startet.
- Setzen mit: chmod u+s filename oder chmod 4xxx filename (wobei xxx für die übrigen Rechte steht)
- Beispiel: chmod 4755 /usr/bin/passwd
SGID (Set Group ID)
Mit SGID läuft eine ausführbare Datei mit den Rechten der Dateigruppe. Bei Verzeichnissen sorgt SGID dafür, dass neu erstellte Dateien darin die Gruppenzugehörigkeit des Verzeichnisses übernehmen.
- Setzen mit: chmod g+s filename oder chmod 2xxx filename (wobei xxx für die übrigen Rechte steht)
- Beispiel: chmod 2775 /shared/project_dir
Sticky Bit
Ist das Sticky Bit auf einem Verzeichnis gesetzt, können Dateien darin nur vom jeweiligen Besitzer, dem Verzeichnisbesitzer oder root gelöscht werden.
- Setzen mit: chmod +t directory oder chmod 1xxx directory (wobei xxx für die übrigen Rechte steht)
- Beispiel: chmod 1777 /tmp
Diese Spezialrechte lassen sich kombinieren. Um zum Beispiel SGID und Sticky Bit gemeinsam auf einem Verzeichnis zu setzen, kannst du verwenden: chmod 3775 directory (3 = 2+1, also SGID + Sticky Bit).
Spezielle Permission-Bits bieten zusätzliche Steuerungsmöglichkeiten und sind besonders relevant für Systemprogramme sowie gemeinsam genutzte Verzeichnisse.
Berechtigungen prüfen
Um Rechte von Dateien und Verzeichnissen anzuzeigen, nutze ls -l. Die Option -l steht für die lange Ausgabe und zeigt unter anderem Rechte, Besitzer, Größe und Änderungszeitpunkt.
ls -l /path/to/file
Für noch detailliertere Informationen eignet sich stat. Der Befehl liefert Dateisystem-Statusdaten wie Dateityp, Rechte, Besitzverhältnisse und Zeitstempel. Mit -c lässt sich das Ausgabeformat steuern.
stat /path/to/file
Einige häufig genutzte Optionen für ls und stat sind:
ls-Optionen
- -l (long): Zeigt detaillierte Informationen zur Datei oder zum Verzeichnis.
- -a (all): Listet auch versteckte Dateien und Verzeichnisse auf.
- -d (directory): Zeigt nur den Verzeichniseintrag selbst, nicht dessen Inhalt.
stat-Optionen
- -c (format): Legt das Ausgabeformat fest. Zum Beispiel zeigt -c %A Rechte lesbar an.
- -f (filesystem): Zeigt Informationen zum Dateisystem, das die Datei enthält, statt zur Datei selbst.
- -t (terse): Gibt die Informationen kompakt aus, was für Skripte praktisch ist.
Grundlagen zu Datei- und Verzeichnisrechten
Schauen wir uns die Berechtigungszeichenkette genauer an, die bei ls -l script.sh erscheint:
-rwxr-xr-- 1 user group 4096 Apr 25 10:00 script.sh
Das erste Zeichen – zeigt, dass script.sh eine normale Datei ist. Wäre es ein Verzeichnis, würdest du stattdessen d sehen.
Die nächsten drei Zeichen rwx beschreiben die Rechte des Besitzers (User). In diesem Fall hat der Besitzer:
- r (read) – er darf den Inhalt ansehen.
- w (write) – er darf die Datei verändern.
- x (execute) – er darf die Datei als Programm ausführen.
Die folgenden drei Zeichen r-x stehen für die Gruppenrechte. Hier hat die Gruppe:
- r (read) – sie darf den Inhalt ansehen.
- x (execute) – sie darf die Datei ausführen.
- Kein w (write) – sie darf die Datei nicht ändern.
Die letzten drei Zeichen r– sind die Rechte für andere Nutzer. In diesem Fall haben andere:
- r (read) – sie dürfen den Inhalt ansehen.
- Kein w (write) und kein x (execute) – sie dürfen weder ändern noch ausführen.
Numerische Entsprechungen
Unter Linux lassen sich Rechte auch numerisch (oktal) ausdrücken. Jede Berechtigung hat einen festen Wert:
- r (read) = 4
- w (write) = 2
- x (execute) = 1
Durch Addieren dieser Werte entstehen typische Kombinationen. Zum Beispiel:
- rwx (read, write, execute) = 7 (4+2+1)
- rw- (read, write) = 6 (4+2)
- r– (read) = 4
Damit lässt sich 755 so aufteilen:
- Besitzer: 7 (rwx) = lesen, schreiben, ausführen
- Gruppe: 5 (r-x) = lesen, ausführen
- Andere: 5 (r–) = lesen
Damit entspricht 755 dem String rwxr-xr-x.
Um Rechte numerisch zu setzen, nutzt du chmod plus Zahl. Um zum Beispiel 755 auf eine Datei oder ein Verzeichnis anzuwenden, verwendest du chmod 755 filename.
Der chmod-Befehl: Symbolische und numerische Modi
Der Befehl chmod ändert den Modus (also die Berechtigungen) einer Datei oder eines Verzeichnisses und unterstützt sowohl numerische als auch symbolische Schreibweisen.
Numerischer Modus
Die folgenden Beispiele zeigen chmod im numerischen Modus für Dateien und Verzeichnisse:
chmod 755 filename
# Setzt die Rechte von 'filename' auf rwxr-x, sodass der Besitzer lesen, schreiben und ausführen darf, die Gruppe lesen und ausführen darf und andere lesen und ausführen dürfen.
chmod 644 document.txt
# Setzt die Rechte von 'document.txt' auf rw-r--, sodass der Besitzer lesen und schreiben darf, die Gruppe lesen darf und andere lesen dürfen.
chmod 700 private.sh
# Setzt die Rechte von 'private.sh' auf rwx------, sodass nur der Besitzer lesen, schreiben und ausführen darf und Gruppe sowie andere keinerlei Rechte erhalten.
Symbolischer Modus
chmod u+x script.sh # Fügt dem Benutzer (Besitzer) der Datei 'script.sh' Ausführungsrechte hinzu, damit das Skript gestartet werden kann.
chmod g-w file.txt # Entfernt der Gruppe der Datei 'file.txt' Schreibrechte, sodass Gruppenmitglieder die Datei nicht verändern können.
chmod o=r file.txt # Setzt die Rechte für andere Nutzer auf nur Lesen für 'file.txt', sodass sie den Inhalt ansehen, aber nicht ändern oder ausführen können.
Beispiele für chmod
Der chmod-Befehl ist flexibel und leistungsfähig, wenn es um Datei- und Verzeichnisrechte unter Linux geht. Die folgenden Beispiele zeigen typische Anwendungsfälle.
Nur-Lesen-Rechte für einen Nutzer vergeben
Um einem Nutzer ausschließlich Leserechte zu geben, kannst du den numerischen Modus 400 nutzen. Das ergibt r–, also: Der Besitzer kann lesen, aber weder schreiben noch ausführen.
chmod 400 file.txt
Schreibrechte für einen Ordner für einen Nutzer setzen
Um einem Nutzer Schreibrechte in einem Ordner zu geben, verwendest du den symbolischen Modus u+w. Damit erhält der Verzeichnisbesitzer Schreibrechte und kann Inhalte ändern.
chmod u+w /path/to/folder
Ein Skript ausführbar machen
Damit ein Skript gestartet werden kann, nutzt du den symbolischen Modus +x. Dadurch wird Ausführungsrecht gesetzt, sodass der Besitzer das Skript starten kann.
chmod +x deploy.sh
Diese Beispiele zeigen, wie sich chmod an verschiedene Nutzer und praktische Szenarien anpassen lässt.
chown und chgrp verwenden
Die Befehle chown und chgrp sind zentrale Werkzeuge, um Besitzverhältnisse unter Linux zu steuern. Wer sie sicher einsetzt, kann Zugriff sauber regeln und sicherstellen, dass Dateien und Verzeichnisse nur für berechtigte Nutzer zugänglich bleiben.
Der chown-Befehl
Mit chown änderst du den Besitzer einer Datei oder eines Verzeichnisses. Dabei kannst du einen neuen Besitzer und optional auch eine Gruppe setzen, sodass die richtige Person oder das passende Team Zugriff hat. Die grundlegende Syntax lautet:
sudo chown username file.txt
In diesem Beispiel wird username der neue Besitzer von file.txt. Um Besitzer und Gruppe in einem Schritt zu setzen, verwendest du:
sudo chown username:groupname file.txt
Damit wird der Besitzer von file.txt auf username gesetzt und die Gruppe auf groupname.
Der chgrp-Befehl
Mit chgrp änderst du ausschließlich die Gruppenzugehörigkeit einer Datei oder eines Verzeichnisses, ohne den Besitzer zu verändern. Die grundlegende Syntax lautet:
sudo chgrp groupname file.txt
In diesem Beispiel wird groupname zur neuen Gruppe von file.txt.
Rekursive Berechtigungen in Linux
Rekursive Berechtigungen erlauben es unter Linux, Rechte auf ein Verzeichnis und alle enthaltenen Dateien und Unterverzeichnisse gleichzeitig anzuwenden. Das ist besonders nützlich, wenn du sehr viele Inhalte innerhalb einer Struktur verwalten musst.
Grundlegende Syntax
Die allgemeine Syntax zum rekursiven Setzen von Rechten lautet:
chmod -R permissions directory
Dabei steht permissions für den gewünschten Rechtewert, und directory ist das Zielverzeichnis, auf das die Änderung angewendet wird.
Beispiele für rekursive Berechtigungen
Die folgenden Beispiele zeigen, wie du rekursive Berechtigungen für ein Verzeichnis und dessen Inhalte setzt.
chmod -R 755 /var/www/html
Dieser Befehl setzt für /var/www/html und alle Inhalte die Rechte 755. Der Besitzer erhält Lesen, Schreiben und Ausführen, während Gruppe und andere Lesen und Ausführen bekommen.
chown -R user:group /var/www/html
Dieser Befehl ändert den Besitz von /var/www/html und allen enthaltenen Dateien auf user und setzt die Gruppe auf group. Damit ist sichergestellt, dass der definierte Nutzer und die definierte Gruppe passende Zugriffsrechte in der gesamten Verzeichnisstruktur haben.
Typische Anwendungsfälle
Webhosting-Ordner einrichten
Beim Aufbau einer Webhosting-Umgebung muss der Webserver die nötigen Rechte haben, um Dateien zu lesen und auszuliefern. Wenn du zum Beispiel /var/www/html auf 755 setzt, kann der Server Dateien lesen und ausführen, während andere nicht in das Verzeichnis schreiben können.
chmod -R 755 /var/www/html
Ein Skript deployen
Beim Ausrollen eines Skripts muss häufig sichergestellt werden, dass es ausführbar ist. Wenn du beispielsweise ein Skript namens deploy.sh während des Deployments ausführen musst, kannst du ihm die Rechte 755 geben:
chmod 755 deploy.sh
Damit kann der Besitzer lesen, schreiben und ausführen, während andere nur lesen und ausführen dürfen.
Gruppenzugriff für Zusammenarbeit setzen
In Teams arbeiten oft mehrere Nutzer am selben Projekt. Um Zusammenarbeit zu erleichtern, werden Gruppenrechte so gesetzt, dass mehrere Personen Dateien nutzen und ändern können. Angenommen, du hast ein Verzeichnis project und möchtest, dass Mitglieder der Gruppe developers darin lesen, schreiben und ausführen dürfen:
chown -R :developers project
chmod -R 775 project
Der erste Befehl setzt die Gruppenzugehörigkeit des Verzeichnisses project und aller Inhalte auf developers. Der zweite Befehl setzt die Rechte so, dass die Gruppe lesen, schreiben und ausführen darf, während andere nur lesen und ausführen können.
Häufige Fehler und Lösungen
Überall 777 setzen
Wenn du pauschal 777 für alle Dateien und Verzeichnisse setzt, kann das ein erhebliches Sicherheitsproblem sein. Dann darf jeder lesen, schreiben und ausführen – das kann zu unbefugtem Zugriff und im schlimmsten Fall zu Sicherheitsvorfällen führen.
Lösung: Nutze restriktivere Rechte, die zum Bedarf der jeweiligen Datei oder des Verzeichnisses passen. Häufig sind 755 für Verzeichnisse und 644 für Dateien sinnvoll, damit der Besitzer schreiben darf und andere nur lesen können.
chmod -R 755 /path/to/directory
chmod -R 644 /path/to/file
Ausführungsrecht bei Skripten vergessen
Wenn Ausführungsrechte bei Skripten fehlen, lassen sie sich nicht starten. Das führt häufig zu Fehlern oder unerwartetem Verhalten.
Lösung: Stelle sicher, dass Skripte Ausführungsrechte für die passenden Nutzer oder Gruppen besitzen. Um beispielsweise dem Besitzer Ausführungsrechte hinzuzufügen:
chmod u+x script.sh
Web-/App-Zugriff durch falsche Rechte lahmlegen
Falsche Rechte auf Web- oder Applikationsverzeichnissen können verhindern, dass der Server Dateien lesen oder ausliefern kann. Das kann Fehler oder Ausfälle verursachen.
Lösung: Stelle sicher, dass der Webserver die nötigen Eigentümer- und Berechtigungswerte hat. Um zum Beispiel den Zugriff für den Apache-Webserver in /var/www/html zu konfigurieren:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
Best Practices
DOs
| Empfehlung | Beschreibung | Beispielbefehl |
|---|---|---|
| Least-Privilege-Prinzip anwenden | Mit minimalen Rechten starten, um Sicherheit zu gewährleisten. | chmod 755 directory |
| Gruppen für Zusammenarbeit nutzen | Gruppenrechte setzen, um Teamarbeit zu vereinfachen. | chown -R :group directory |
| Rekursive Befehle immer prüfen | Die Auswirkungen rekursiver Änderungen prüfen, um unbeabsichtigte Anpassungen zu vermeiden. | ls -lR directory |
DON’Ts
| Vermeiden | Beschreibung | Beispielbefehl |
|---|---|---|
| chmod 777 unnötig verwenden | chmod 777 nur im absoluten Ausnahmefall nutzen, da es Sicherheitsrisiken erhöht. | chmod 755 directory |
| Ausführungsrechte bei Skripten vergessen | Skripten Ausführungsrechte geben (chmod +x), damit sie korrekt funktionieren. | chmod +x script.sh |
| App-Zugriff durch zu strikte Rechte brechen | Rechte so ausbalancieren, dass Anwendungen nicht blockiert werden. | chmod 644 file.txt |
FAQs
1. Wie setzt man Berechtigungen in Linux?
Berechtigungen in Linux werden mit dem chmod-Befehl gesetzt. Damit kannst du Zugriffsrechte für Dateien und Verzeichnisse anpassen. Um zum Beispiel dem Besitzer volle Rechte zu geben und Gruppe sowie anderen Lesen und Ausführen zu erlauben, nutzt du:
chmod 755 filename
Damit werden die Rechte auf rwxr-xr-x gesetzt, was dem numerischen Wert 755 entspricht.
2. Was bedeutet chmod 755 oder 777?
chmod 755 gibt dem Besitzer Lesen, Schreiben und Ausführen. Gruppe und andere erhalten Lesen und Ausführen. Das ist eine typische Einstellung für Verzeichnisse und ausführbare Dateien.
chmod 777 gibt allen (Besitzer, Gruppe, andere) Lesen, Schreiben und Ausführen. Das ist aus Sicherheitsgründen nicht empfehlenswert, weil damit jeder Dateien verändern oder ausführen kann.
Beispiel für chmod 777:
chmod 777 filename
Das setzt die Rechte auf rwxrwxrwx, was dem numerischen Wert 777 entspricht.
3. Was bedeutet chmod 666 oder 777?
chmod 666 erlaubt allen Lesen und Schreiben, aber nicht Ausführen. Das ist eher unüblich, weil Dateien damit nicht ausführbar sind.
chmod 777 setzt – wie oben beschrieben – Lesen, Schreiben und Ausführen für alle Nutzer.
Beispiel für chmod 666:
chmod 666 filename
Das setzt die Rechte auf rw-rw-rw-, was dem numerischen Wert 666 entspricht.
4. Was bedeutet chmod 400?
chmod 400 erlaubt nur dem Besitzer das Lesen und verweigert alle Rechte für Gruppe und andere. Das ist eine sehr restriktive Einstellung, geeignet für vertrauliche Dateien.
Beispiel für chmod 400:
chmod 400 filename
Das ergibt r——– und entspricht dem numerischen Wert 400.
Fazit
Das Verwalten von Berechtigungen unter Linux ist ein grundlegender Bestandteil von Systemadministration und Sicherheit. Wenn du die verschiedenen Rechte verstehst und Befehle wie chmod, chown und chgrp gezielt einsetzt, stellst du sicher, dass Dateien und Verzeichnisse nur für autorisierte Nutzer zugänglich sind und dein Linux-System sicher und zuverlässig bleibt.


