Datei- und Verzeichnisberechtigungen

Damit Ihre Webseite vom Webserver gelesen und übertragen werden kann, müssen Dateien über die Berechtigung 640 und Verzeichnisse über die Berechtigung 750 verfügen. Eine Ausnahme sind Perl- und Python-Skripte im /cgi-bin Verzeichnis, welche ebenfalls über die Berechtigung 750 verfügen müssen, damit diese vom Webserver ausgeführt werden können.

Dateiberechtigungen erklärt

Auf Unix, Linux und ähnlichen Betriebssystemen werden Dateiberechtigungen in 3 Gruppen unterteilt: Benutzer, Benutzergruppe und Andere. Jede Datei ist immer jeweils einem Benutzer sowie einer Benutzergruppe zugeordnet. Dies ist wichtig, sobald ein Benutzer bzw. ein Programm auf eine Datei zugreifen möchte. Dabei wird zunächst geprüft, ob die entsprechende Datei dem Benutzer gehört. In dem Fall würden die Benutzer-Rechte gelten. Gehört die Datei nicht dem entsprechenden Benutzer, wird die Benutzer-Gruppe überprüft. Befindet sich der Benutzer in der entsprechenden Benutzergruppe, gelten die Benutzergruppen-Rechte. Stimmen weder Benutzer noch Benutzergruppe überein, gelten die Rechte für andere Benutzer.

Die Berechtigungen werden immer mit 3 (Oktal-)Zahlen oder 10 Zeichen dargestellt. Lassen wir uns per SSH den Inhalt eines Verzeichnisses mit dem Befehl ls -la ausgeben, werden die Dateiberechtigungen für alle Dateien und Verzeichnisse angezeigt. Das sieht dann zum Beispiel so aus (hier als Beispiel das Verzeichnis einer WordPress Installation):

drwxr-x---   5 123456f56789  www   1024 May  5 12:22 .
drwxr-x---  17 123456f56789  www    512 May  4 17:31 ..
-rw-r-----   1 123456f56789  www    742 May  5 12:22 .htaccess
-rw-r-----   1 123456f56789  www    405 Jan 27  2022 index.php
-rw-r--r--   1 123456f56789  www  19915 May  4 15:33 license.txt
-rw-r--r--   1 123456f56789  www   8723 May  4 15:33 liesmich.html
-rw-r--r--   1 123456f56789  www   7437 May  4 15:33 readme.html
-rw-r-----   1 123456f56789  www   7165 Jan 27  2022 wp-activate.php
drwxr-x---   9 123456f56789  www   2560 Jan 27  2022 wp-admin
-rw-r-----   1 123456f56789  www    351 Jan 27  2022 wp-blog-header.php
-rw-r-----   1 123456f56789  www   2338 Jan 27  2022 wp-comments-post.php
-rw-r-----   1 123456f56789  www   3622 Jan 27  2022 wp-config-sample.php
-rw-r-----   1 123456f56789  www   1240 Apr 20  2022 wp-config.php
drwxr-x---   7 123456f56789  www    512 May  4 15:33 wp-content
-rw-r-----   1 123456f56789  www   3939 Jan 27  2022 wp-cron.php
drwxr-x---  26 123456f56789  www   7168 Jan 27  2022 wp-includes
-rw-r-----   1 123456f56789  www   2496 Jan 27  2022 wp-links-opml.php
-rw-r-----   1 123456f56789  www   3900 Jan 27  2022 wp-load.php
-rw-r-----   1 123456f56789  www  47916 Jan 27  2022 wp-login.php
-rw-r--r--   1 123456f56789  www   8527 May  4 15:33 wp-mail.php
-rw-r-----   1 123456f56789  www  23025 Jan 27  2022 wp-settings.php
-rw-r-----   1 123456f56789  www  31959 Jan 27  2022 wp-signup.php
-rw-r--r--   1 123456f56789  www   4816 May  4 15:33 wp-trackback.php
-rw-r-----   1 123456f56789  www   3236 Jan 27  2022 xmlrpc.php

Die ersten 10 Zeichen geben hier die Dateiberechtigungen an. Diese sind - wie oben bereits beschrieben - in 3 Blöcke für Benutzer, Benutzergruppe und Andere unterteilt.

Das erste Zeichen gibt an, ob es sich um ein Verzeichnis oder eine normale Datei handelt. Ist das erste Zeichen ein d, handelt es sich um ein Verzeichnis (engl. directory). Die nächsten 3 Zeichen (Zeichen 2 bis 4) geben die Benutzerrechte an. Darauf folgen 3 Zeichen (Zeichen 5 bis 7) für die Benutzergruppe, gefolgt von 3 Zeichen (Zeichen 8 bis 10) für andere Benutzer. Die Berechtigungen werden mit r (read / Leseberechtigung), w (write / Schreibberechtigung) und x (execute / Ausführberechtigung) angegeben.

  • Leseberechtigung besagt, dass eine Datei geöffnet und gelesen werden darf.
  • Schreibberechtigung besagt, dass eine Datei geöffnet und beschrieben werden darf.
  • Ausführberechtigung besagt, dass eine Datei als Programm ausgeführt werden darf. Im Fall von Perl- und Python-Skripten ist diese Berechtigung wichtig, da für diese - anders als im Fall von PHP - das Skript serverseitig ausgeführt werden muss, um den entsprechenden HTML-Quelltext zu erzeugen, der anschließend an den Webbrowser übertragen wird. Im Fall von PHP übernimmt der Webserver selbst die Verarbeitung der entsprechenden Skripte, daher ist dafür keine Ausführberechtigung notwendig. Bei Verzeichnissen bedeutet die Ausführberechtigung, dass ein Verzeichniss als sogenanntes Arbeitsverzeichnis genutzt werden darf, um darin Skripte und Programme auszuführen. Dies ist auch notwendig, um per SSH mit dem Befehl cd in ein Verzeichnis wechseln zu können.

Wir haben hier eine kleine Übersicht erstellt, in der wir gängige Dateiberechtigungen aufschlüsseln und erklären:

Berechtigung numerische Darstellung Erklärung
drwxr-x--- 750 Ein Verzeichnis, das vom Besitzer gelesen und beschrieben werden darf und von der Benutzergruppe nur gelesen werden darf. Alle anderen Benutzer haben keinen Zugriff auf dieses Verzeichnis
drwxr-xr-x 755 Ein Verzeichnis, das vom Besitzer gelesen und beschrieben werden darf und von allen anderen Benutzer nur gelesen werden darf.
drwx------ 700 Ein Verzeichnis, das ausschließlich vom Besitzer gelesen und beschrieben werden darf. Alle anderen Benutzer (auch die der entsprechenden Benutzergruppe) haben keinen Zugriff auf das Verzeichnis.
-rwxr-x--- 750 Eine Datei, die vom Besitzer der Datei gelesen, beschrieben und als Programm ausgeführt werden darf und von der Benutzergrupp gelesen und als Programm ausgeführt werden darf. Alle anderen Benutzer haben keinen Zugriff auf diese Datei.
-rw-r----- 640 Eine Datei, die vom Besitzer der Datei gelesen und beschrieben werden darf und von der Benutzergruppe gelesen werden darf. Die Datei darf nicht als Programm ausgeführt werden.
-rwxr-xr-x 755 Eine Datei, die vom Besitzer der Datei gelesen, beschrieben und als Programm ausgeführt werden darf und von allen anderen Benutzern gelesen und als Programm ausgeführt werden darf.
-rw-r--r-- 644 Eine Datei, die vom Besitzer der Datei gelesen und beschrieben werden darf und von allen anderen Benutzern nur gelesen werden darf. Die Datei darf nicht als Programm ausgeführt werden.
-rw------- 600 Eine Datei, die ausschließlich vom Besitzer der Datei gelesen und beschrieben werden darf. Die Datei darf nicht als Programm ausgeführt werden. Alle anderen Benutzer (auch die der entsprechenden Benutzergruppe) haben keinen Zugriff auf die Datei.
-rwx------ 700 Eine Datei, die ausschließlich vom Besitzer der Datei gelesen, beschrieben und als Programm ausgeführt werden darf. Alle anderen Benutzer (auch die der entsprechenden Benutzergruppe) haben keinen Zugriff auf die Datei.
-rwxrwxrwx 777 Eine Datei mit Vollzugriff für alle Benutzer. Nicht empfohlen, da die Datei von allen Benutzern auf dem Server geändert werden kann.