de

Dateien und Berechtigungen

Recht häufig kommt es zu Problemen, weil WBCE nicht auf Dateien oder Verzeichnisse zugreifen kann - also beispielsweise keine neuen Module installiert oder Accessfiles angelegt werden können.

Ursache dafür sind oft falsch konfigurierte serverseitige Zugriffsrechte. Es lohnt also, sich etwas eingehender mit der Thematik zu beschäftigen.

Autor: Christian Sommer; Codeschnipsel: pcwacht

Grundlagen

Für jede Datei und jedes Verzeichnis gelten unter Unix/Linux – was in 99 von 100 Fällen als Betriebssystem des Webservers zum Einsatz kommt – verschiedene Zugriffsrechte für verschiedene Gruppen und ist einem Benutzer zugeordnet.

Dateieigentümer

Jeder, der auf einen Server zugreift, egal ob lokal direkt am Server oder aus der Ferne über FTP, benötigt auf dem Server einen Benutzeraccount mit zugehörigem Kennwort. Jeder Benutzeraccount wiederum ist einer Gruppe zugeordnet. Beispiele für Gruppen, die oft auf einem Webserver zu finden sind, wären ftp-user, root, wwwrun-user.


Entscheidend ist nun: Alle Prozesse wie auch alle Programme, die auf einem System gestartet werden, müssen unter einem bestimmten Benutzer ausgeführt werden. So greift auch der Webserver unter einem Benutzeraccount auf Dateien zu und auch Ihre FTP-Zugangsdaten sind nichts anderes als Benutzerkonten des Webservers. Wird eine Datei neu erzeugt, so ist ihr Eigentümer immer derjenige, der die Aktion veranlasst hat.

Hinweis:
Dateien, die per FTP auf den Webserver geladen werden, erhalten als Dateieigentümer Ihren FTP-Account (ftp-user). Gleichzeitig werden diese Dateien auch der Gruppe zugewiesen, in welcher sich Ihr FTP-Account befindet.
Erstellt hingegen ein PHP Skript eine Datei, ist der Dateieigentümer und die Gruppe das PHP-Skript (wwwrun-user), welches die Datei erstellt hat. Sie können diese Datei dann möglicherweise nicht ohne weiteres mit dem FTP Programm löschen oder umbenennen. 

Dateiberechtigungen und Gruppen

Linux-Dateisysteme unterscheiden drei Gruppen: Besitzer (owner), Gruppe (group) und alle anderen (world). Für alle diese Gruppen können unter Linux individuelle Dateiberechtigungen vergeben werden. Grundsätzlich gibt es die Optionen "Lesen", "Schreiben", "Ausführen". Die Berechtigung "Ausführen" ist auf einem Webserver meist nicht von Interesse (zumindest nicht bei PHP-Skripten, da diese vom Webserver nur eingelesen werden).

Diese Berechtigungen können nun für den Besitzer, die Gruppe und für Sonstige (also alle anderen) festgelegt werden. Die Berechtigungen werden meist als Nummern geschrieben. Dabei bedeutet:

Berechtigung Wert
keine Berechtigung 0
darf ausführen 1
darf schreiben 2
darf lesen 4

 

Möchten wir also z.B. festlegen, dass eine Datei vom Besitzer gelesen, überschrieben (auch gelöscht) und ausgeführt werden darf, alle anderen diese Datei aber nur lesen dürfen, würde dies bedeuten:
Eigentümer = 1 + 2 + 4 = 7, Gruppe = 4, Sonstige = 4.
Da die Rechte immer in dieser Reihenfolge geschrieben werden, ist die übliche Schreibweise hierfür 0744 (die "0" am Anfang stellt keinen wirklichen Wert dar, sondern sagt aus, dass es sich um eine Oktalzahl handelt).

Beispiele

777 - Lesen, Schreiben und Ausführen der Datei für Besitzer, Gruppe und alle anderen möglich (Achtung: niedrigste Sicherheitsstufe, jeder kann die Datei verändern!)

755 - Lesen, Schreiben und Ausführen sind nur dem Besitzer der Datei erlaubt. Alle anderen dürfen die Datei nur lesen und ausführen, aber nicht verändern (schreiben/löschen).

Zusammenfassung:
Für jede Datei oder jeden Ordner werden also immer drei Zahlen benötigt (owner, group, world). Die Dateiberechtigung der drei Gruppen wird durch einfache Addition der in Tabelle 1 dargestellten Zahlen festgelegt.

Probleme mit Dateiberechtigungen

Bei der Installation von WBCE werden i.d.R. alle Dateien per FTP auf den Webserver geladen. Als Eigentümer und Gruppe wird automatisch der ftp-user zugewiesen.

Seiten, die über die Seitenverwaltung von WBCE erstellt werden, sowie alle Erweiterungen, Designvorlagen oder Sprachdateien, die über das Backend von WBCE installiert wurden, werden von PHP-Skripten erstellt und sind somit dem wwwrun-user zugewiesen (Besitzer und Gruppe).

Zu Problemen kann es immer dann kommen, wenn bestehende Dateien mittels FTP verschoben oder umbenannt werden sollen. Dateien, die von PHP-Skripten erzeugt wurden, lassen sich unter Umständen nicht verschieben, da das FTP-Programm (ftp-user) keine Berechtigung hat, von PHP generierte Dateien (wwwrun-user) zu verschieben. Laden Sie z.B. die index.php Datei Ihres Templates herunter, um diese lokal zu ändern und spielen diese anschliessend per FTP zurück, wird deren Berechtigung von wwwrun-user auf ftp-user geändert. Probleme wird es dann geben, wenn ein PHP Skript versucht diese Datei zu ändern oder zu löschen (z.B. beim Deinstallieren des Templates über das Backend von WB).

Empfehlung:
Installieren Sie Dateien mit den dafür vorgesehenen Funktionen von WBCE. Erweiterungen, Module, Sprachdateien und Seiten sollten über das WBCE-Backend installiert oder gelöscht werden. 

Dateiberechtigungen prüfen

Sind Probleme mit Dateiberechtigungen aufgetaucht, kann Ihnen das nachfolgende Skript helfen, den Fehler zu lokalisieren. Das Skript prüft die Dateiberechtigungen aller in WBCE vorhanden Ordner und Dateien. 

Erstellen Sie eine neue Seite vom Typ "Code" bzw. "Code2 (PHP)" und kopieren Sie dort den Code aus der Datei check_dir.txt hinein. Das Skript untersucht die Ordner /templates, /pages, /languages und /media Ihrer WBCE- Installation.

Dieser Code dient der Fehlersuche auf Linux/Unix basierten Webservern. Das Skript ist nicht für Windows basierte Webserver wie IIS konzipiert.

PHP-Dateimanager

PHP-basierte Dateimanager erlauben das Ändern von Dateiberechtigungen oder Textinhalten all jener Dateien, die nicht über FTP angesprochen werden können. 

Ein mächtiger Dateimanager ist Webadmin (ursprünglich von Daniel Wacker, etwas aktualisiert und unter neueren PHP-Versionen lauffähig gemacht von Norbert Heimsath). Er besteht aus einer einzigen Datei, die Bestandteil der WBCE-Tools ist, die auf GitHub heruntergeladen werden können. 

VORSICHT!
Webadmin enthält weder Beschränkungen auf den Dateizugriff und noch einen Zugangsschutz. Das Skript sollte also sofort nach Gebrauch wieder per FTP vom Server entfernt werden. Ansonsten gibt man jedem, der mit Suchmaschinen umgehen kann, vollen Zugriff - nicht nur auf die Dateien im WBCE-Wurzelverzeichnis,  sondern auf ALLE Dateien und Ordner auf dem Webserver!

Kopieren Sie Webadmin sicherheitshalber in ein eigenes Verzeichnis mit möglichst abwegigem, nicht erratbarem Namen unterhalb des WBCE-Wurzelverzeichnisses und schützen Sie dieses mittels .htaccess und .htpasswd . Wenn Sie nicht wissen, wie das geht, sollten Sie Webadmin auf gar keinen Fall benutzen!

Eine gute Alternative zu Webadmin ist der Dateimanager OneFileCMS. Dieser Dateimanager bringt eine rudimentäre Zugriffsbeschränkung mit.