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.

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.

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.

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.

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.

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:

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:

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:

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:

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:

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:

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.

Quelle: digitalocean.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

ssl_error_rx_record_too_long beheben in Apache & Nginx

Security, Tutorial
Vijonavor 16 Minuten ssl_error_rx_record_too_long beheben: Ursachen, Symptome und typische Konfigurationsfallen Wenn im Browser plötzlich ssl_error_rx_record_too_long auftaucht, fühlt sich das beim Einrichten von sicherem HTTPS schnell wie eine harte Blockade an. Meist…