Dateiberechtigungen (chmod, chown) unter Linux einfach erklärt

Linux 3 Min. Lesezeit

Unter Linux sind mit jeder Datei und jedem Verzeichnis Berechtigungen verbunden, die festlegen, wer diese lesen, schreiben oder ausführen darf. Eine falsche Konfiguration führt zu zwei Arten von Fehlern: Bei zu strengen Berechtigungen kann der Webserver die Dateien nicht lesen (Fehler 403) oder die Website lässt sich nicht laden; bei zu großzügigen Berechtigungen hingegen können ein gehacktes Skript oder ein anderer Benutzer diese ändern.

Drei Berechtigungsstufen

Jede Datei ist einer von drei Berechtigungskategorien zugeordnet:

  • Eigentümer (owner, u): Der Benutzer, der die Datei erstellt hat oder dem die Datei zugewiesen wurde.
  • Gruppe (group, g): Die Mitglieder der Benutzergruppe, die der Datei zugeordnet ist.
  • Sonstige (others, o): alle anderen Nutzer des Systems.

Arten von Berechtigungen

Für jede Kategorie können drei Arten von Berechtigungen gelten:

Recht Datei Unter „Verzeichnis“ Wert
r (lesen) Inhalt lesen Inhaltsverzeichnis 4
w (Schreiben) Inhalt bearbeiten Erstellen, Löschen und Umbenennen von Dateien 2
x (ausführen) als Programm ausführen Zugang zur Bibliothek 1

In der Ausgabe von „ls -l“ werden die Berechtigungen beispielsweise wie folgt angezeigt: -rwxr-xr--. Das erste Zeichen gibt den Typ an (- Datei, d Verzeichnis, l symbolischer Link), die darauf folgenden neun Zeichen zeigen in Dreiergruppen die Rechte des Eigentümers, der Gruppe und der übrigen Benutzer an. Dort sind auch der Name des Eigentümers und der Gruppe zu sehen. Unter AlmaLinux und Rocky Linux steht hinter den Berechtigungen ein Punkt (-rw-r--r--.): Dies zeigt an, dass die Datei über ein SELinux-Label verfügt, das nicht zu den Berechtigungen gehört. Das Label wird durch den Befehl „ls -Z“ angezeigt (siehe: SELinux: Warum erhalte ich die Fehlermeldung „Permission denied“?).

Änderung der Berechtigungen: chmod

In Zahlen

Die Berechtigungen der drei Kategorien werden in verschiedenen Formaten jeweils durch eine Ziffer beschrieben, die sich aus der Summe der Werte r, w und x ergibt:

chmod 755 mappa
chmod 644 index.php

Die Berechtigung „755“ gewährt dem Eigentümer volle Rechte (rwx = 4+2+1 = 7), der Gruppe und allen anderen Lese- und Ausführungsrechte (r-x = 4+1 = 5). Die Berechtigung „644“ gewährt dem Eigentümer Lese- und Schreibrechte (rw- = 6), allen anderen lediglich Leserechte (r– = 4).

In Buchstaben

Die Buchstabenform ändert die bestehenden Rechte:

chmod u+x szkript.sh     # a tulajdonos futtathatja
chmod go-w config.php    # a csoport és mások írási jogának elvétele
chmod o= titkos.txt      # mások semmilyen jogot nem kapnak

Empfohlene Einstellungen für Websites

Bei Websites sind in der Regel Berechtigungen von 755 für Verzeichnisse und 644 für Dateien angemessen. Für sensible Konfigurationsdateien (wie beispielsweise wp-config.php) können strengere Berechtigungen (640 oder 600) gelten, wenn der Webserver im Namen des Eigentümers ausgeführt wird. Einrichten einer vollständigen Verzeichnisstruktur:

find /var/www/oldal -type d -exec chmod 755 {} \;
find /var/www/oldal -type f -exec chmod 644 {} \;

Verwenden Sie den Befehl „chmod -R 755“ nicht für den gesamten Verzeichnisbaum, da dadurch auch Dateien ausführbar werden: Bei einem Test erhielt eine .php-Datei dadurch die Berechtigungen -rwxr-xr-x, nach dem oben genannten Befehl „find … -type f … 644“ jedoch wieder -rw-r--r--. Bei vielen Dateien ist die Domainendung {} + schneller (find /var/www/oldal -type f -exec chmod 644 {} +), da chmod mehrere Dateien gleichzeitig verarbeitet.

Eigentümer ändern: chown

Der Befehl „chown“ ändert den Eigentümer und die Gruppe einer Datei oder eines Verzeichnisses. Hierfür sind root- oder sudo-Rechte erforderlich:

sudo chown felhasznalo:csoport fajlnev
sudo chown -R www-data:www-data /var/www/oldal

Der Schalter „-R“ wird rekursiv auf den gesamten Verzeichnisbaum angewendet. Der Benutzer des Webservers variiert je nach Distribution: unter Debian und Ubuntu ist es „www-data“, unter AlmaLinux und Rocky Linux „apache“ oder „nginx“. Wenn Sie lediglich die Gruppe ändern möchten, können Sie auch den Befehl „chgrp“ verwenden.

Warum sollten Sie die Nummer 777 meiden?

Die Berechtigung „777“ gewährt jedem vollständige Schreibrechte. Sie wird oft als schnelle „Abhilfe“ bei einer fehlerhaften Berechtigungseinstellung eingesetzt, doch dadurch kann jeder Prozess die Dateien ändern oder durch schädlichen Code ersetzen. Bei cPanel-Hosting läuft PHP in der Regel als eigener Benutzer des Kontos, weshalb dort die Berechtigungen 755/644 völlig ausreichen. Die Berechtigungen können auch im cPanel-Dateimanager geändert werden, siehe: Dateiverwaltung auf cPanel-Hosting. Auf Ihrem eigenen VPS sollten Sie stets die geringstmöglichen erforderlichen Berechtigungen festlegen.

Zurück: Linux-Artikel (62)