chmod – Dateirechte unter Linux

Linux ist ein Mehrbenutzersystem, das heist, es können gleichzeitig mehere Benutzer auf einem Rechner arbeiten. Jeder Benutzer darf für seine Dateien festlegen, ob andere Benutzer diese Dateien lesen, schreiben und/oder ausführen dürfen.
Im Fall von CGI oder PHP Scripten ist der „andere Benutzer“ der Webserver, welcher CGI-Scripte aus Sicherheitsgründen unter einer anderen Benutzerkennung startet.
Der Webserver darf dabei meist nur auf Dateien zugreifen, die für „alle“ oder „Welt“ lesbar / schreibbar / ausführbar sind.

Dateirechte

Für jede Datei gibt es die Rechte „Lesen“, „Schreiben“ und „Ausführen“.
Diese Rechte werden pro Datei für 3 verschiedene Benutzergruppen vergeben, nämlich „Benutzer“, „Gruppe“ und „Welt“.
Die Rechte für „Benutzer“ geben an, was du mit der Datei machen darfst, wenn du selbst angemeldet bist, z.B. per ssh (Kommandozeile auf dem Rechner) oder ftp.
Die Rechte für „Gruppe“ geben die Berechtigungen für Mitglieder deiner Gruppe an, diese Einstellung ist für Webserver nicht relevant und sollten gleich denen von „Welt“ sein.
Die Rechte für „Welt“ geben die Berechtigungen für alle anderen Benutzer an, hier insbesondere für den Webserver, der CGI-Scripte ausführen will.

Die Dateiberechtigungen werden entweder als 3- oder 4-stellige Oktalzahl oder in Form einer Strichgrafik (wird zum Beispiel vom ls Kommando angezeigt) angegeben und angezeigt.

oktale Schreibweise (als Zahl)

Hier wird jedem Recht eine Zahl zugeordnet:

RechtZahl
Lesen4
Schreiben2
Ausführen1

Die Addition dieser Zahlen ergibt das Recht für eine Benutzergruppe, z.B. Lesen und Schreiben = 4+2 = 6. Bei der 3-stelligen Zahl steht zuerst die Ziffer für den Benutzer, dann die für die Gruppe und dann die für Welt.

Beispiel:

 BenutzerGruppeWelt
LesenXXX
SchreibenX
AusführenXXX
Zahl4 + 2 + 1 = 74 + 1 = 54 + 1 = 5
755

Darstellung mit Strichen wie bei „ls -l“

Hier sieht es in etwa so aus: -rw-r–r–
An jeder Position steht entweder ein – (für nicht gesetzt) oder ein Buchstabe. Die Buchstaben sind r für Lesen, w für Schreiben und x für ausführen.

-rw-r--r--
123456789A
PositionBedeutung
1Dateiart:
– normale Datei
d Verzeichnis
l Link
2Benutzerr – Lesen erlaubt
3w – Schreiben erlaubt
4x – Ausführen erlaubt
5Grupper – Lesen erlaubt
6w – Schreiben erlaubt
7x – Ausführen erlaubt
8Weltr – Lesen erlaubt
9w – Schreiben erlaubt
Ax – Ausführen erlaubt

Standarddateiberechtigungen

HTML, PHP, Grafiken, etc.644, Benutzer darf lesen und schreiben, Webserver lesen
Verzeichnisse755, Benutzer darf lesen, schreiben, ins Verzeichnis wechseln und Webserver darf lesen und ins Verzeichnis wechseln
CGI-Scripte755, Benutzer darf lesen, schreiben und ausführen, Webserver lesen und ausführen
Daten, die von CGI/PHP-Scripten geschrieben werden müssen (auch PHP Konfigurationsdateien)666, Benutzer darf lesen und schreiben, Webserver lesen und schreiben
Verzeichnisse, wo von CGI/PHP-Scripten Dateien angelegt werden müssen777, Benutzer und Webserver dürfen lesen, schreiben, ins Verzeichnis wechseln

Dateirechte mit dem UNIX-Befehl chmod setzen

Bei chmod kann man die Dateiberechtigungen entweder als Oktalzahl (siehe oben) übergeben (z.B. chmod 755 script.pl), oder aber als Buchstabenkombination. Nach dieser Angabe folgt die Liste der zu ändernden Dateien.
Dies sieht dann so aus: chmod a+x script.pl
Dabei bedeutet:

 SetzenAusführen
Weitere Optionena – Alle (also Benutzer, Gruppe und andere)
u – Benutzer
g – Gruppe
o andere
+ – Setzwn
– Löschen
r – Lesen
w – Schreiben
x – Ausführen

Beispiel: chmod u+rw *pl – Benutzer darf alle pl-Dateien schreiben

Dateirechte per FTP setzen

Fast jedes FTP-Programm bietet einen Befehl, die Attribute / Dateirechte zu ändern.
Meist heisst dieser chmod oder Attribute ändern (Kontextmenü!).
Sollte es diesen Befehl nicht geben, gibt es noch folgende Möglichkeiten:
1. Das ftp-Programm hat einen Menüeintrag SITE. Nach Auswahl wird man aufgefordert, einen Text einzugeben, hier muß dann chmod 755 dateiname.cgi eingegeben werden, die Zahl und der Dateiname sind natürlich zu ersetzen.
2. Das ftp-Programm bietet eine Option, einen Befehl unverändert zum Server zu senden (z.B. quote). Hier muß dann SITE chmod 755 dateiname.cgi eingegeben werden.