Was ist ein CHMOD?

Beschreibung: CHMOD steht für "Change Mode" und wird verwendet, um die UNIX-Rechte für Dateien bzw. Verzeichnisse festzulegen.

Kategorie: Installation und Update, Lexikon, Server, PHP und MySQL

Link zu diesem Artikel: Alles auswählen

[url=https://www.phpbb.de/kb/viewarticle?a=9&sid=6b8651ea5402a36219fbb2c8335e0c96]Knowledge Base - Was ist ein CHMOD?[/url]

CHMOD steht für "Change Mode" und wird verwendet, um die UNIX-Rechte für Dateien bzw. Verzeichnisse festzulegen. Da die meisten Webserver unter Linux/Unix laufen, wird dieses Kommando vermutlich bei fast allen phpBB-Installationen benötigt.

Für die Datei bzw. das Verzeichnis können dabei verschiedene Rechte vergeben werden. Meist werden Rechte in oktaler Schreibweise festgehalten; dies sind drei Zahlen à la 777, 644 etc.; gelegentlich jedoch auch in Bitschreibweise ( rwxr--r-- ).
Mit besseren FTP-Clients (z.B. SmartFTP) lassen sich für jedes Verzeichnis/jede Datei Rechte vergeben.
Zwei gängige Rechtekombinationen wären z.B. 777 (alle Rechte; jeder darf alles mit dieser Datei anstellen) und 644 (Lesen und Schreiben für Owner, alle anderen nur lesen (Standardeinstellung vieler Server)).

Struktur

Um die Eigenschaften von CHMOD zu verstehen sollte man folgendes Bild sehen:
Bild
In den Dateilisten werden die UNIX-Attribute als dreistellige Zahl dargestellt.
  • Die erste Ziffer steht für Besitzerrechte.
  • Die zweite Ziffer steht für Gruppenrechte.
  • Die dritte Ziffer steht für die Rechte aller übrigen Benutzer.
  • Die Ziffern werden durch Addition der Rechte gebildet: 4=Lesen, 2=Schreiben, 1=Ausführen
  • z.B. 754 bedeutet: Besitzer darf alles, Gruppe darf lesen und starten, Welt darf nur lesen.
Beispiele:
744 - Der Besitzer hat vollen Zugriff, die anderen dürfen nur lesen
777 - Jeder hat vollen Zugriff auf die Datei

Die richtige CHMOD-Einstellung

Die richtige CHMOD-Einstellung hängt von der Konfiguration des Webservers ab. Generell sollte man die Rechte so niedrig wie möglich setzen, um die Sicherheit zu erhöhen.
Läuft der Webserver beispielsweise unter dem Dateieigentümer (User) selbst, so brauchen natürlich keine Gruppen- oder gar Weltrechte (Rechte für jeden anderen User) existieren und diese können genullt werden, dies ist aber eher selten anzutreffen.
Ist der Webserver-User aber Teil der Gruppe, der diese Datei gehört, benötigt man die User- und die Gruppenrechte, aber keine Weltrechte. Dies ist eine durchaus verbreitete Konfiguration.
Ist der Webserver-User nicht Dateieigentümer und nicht Teil der Gruppe, ist es notwendig Weltrechte zu setzen. Solange der Webserver nur lesen muss, reichen hier Leserechte, also 4, muss der Webserver-User aber auch schreiben (Templatecache, Avatare, was auch immer), sind hier ebenfalls Schreibrechte notwendig, also 6. In phpBB 3.3.x und 3.2.x benötigen nur die Ordner cache/ files/ und store/ (sowie ggf. images/avatars/uploads/ und während der Installation config.php) Schreibrechte.

Rechte auf Verzeichnissen

Während man bei Dateien natürlich für das ein oder andere Ausführungsrechte benötigt, machen Ausführungsrechte auf Verzeichnissen natürlich keinen Sinn, daher haben sie hier einen anderen Zweck.
Rechte auf Verzeichnisse sind aufgeteilt in das Recht das Verzeichniss zu betreten und das Verzeichnis zu lesen, also eine Liste der enthaltenen Dateien zu holen.
Wenn man also auf ein Verzeichnis Ausführungsrechte setzt, heisst das nicht etwa das Verzeichnis ist ausführbar, sondern es bedeutet, man darf das Verzeichnis betreten. Allgemein macht es keinen Sinn, Leserechte zu geben, aber keine Rechte das Verzeichnis zu betreten, daher sollte man immer darauf achten, dass dies bei der Rechtevergabe berücksichtigt wird. Das heißt, würde man auf eine Datei die Rechte 644 anwenden, würde man auf ein Verzeichnis die Rechte 755 anwenden, um das zu erreichen, was man erwartet und will. Als Faustregel könnte man sich hier merken, die Zahl bei Verzeichnissen immer um eins erhöhen, es sei denn die Zahl ist 0.