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. |