Englisch: HomePage |
PmWikiDe /
Dateirechte
Administratoren
Diese Seite beschreibt kurz PmWikis Einstellungen für Datei- und Verzeichnisrechte in einer typischen Unix-Umgebung. Einfache Installation (out of the box)Sehen wir uns zunächst PmWiki ohne irgend ein geladenes Kochbuchrezept an. PmWiki muss in der Lage sein,
Das sind die *einzigen* Verzeichnisse, in die der Webserver schreiben können muss. Es ist für PmWiki egal, wer diese Verzeichnisse erzeugt oder besitzt, solange es Schreibrechte darin erhält. Alles Andere sollte dem Besitzer des Accounts gehören und vom Webserver-Account gelesen werden können (aber normalerweise nicht für den Webserver-Account beschreibbar sein). Das war's – alles andere hängt von der spezifischen PHP-Konfiguration und -Laufzeitumgebung ab, die weiter unten detailierter beschrieben wird (und die der Grund ist dafür, dass es nicht die definitive Antwort gibt, die auf alle Situationen passt). Aber die obigen zwei Regeln sind absolut und decken 95% der Fragen zu den Dateirechten ab. Auf einem Unix-Host läuft der Webserver typischerweise mit einer 'userid' und 'groupid', die von der des Besitzers des Accounts verschieden ist. So ist in Standardinstallationen die 'userid' gewöhnlich so etwas wie "nobody", "apache", "www" oder "httpd". Deshalb erzeugt der Besitzer des Accounts in einer Standardinstallation die Verzeichnisse $ pwd /home/pmichaud/public_html/pmwiki $ mkdir uploads $ mkdir wiki.d $ chmod 777 uploads wiki.d $ ls -ld . uploads wiki.d drwxr-xr-x 12 pmichaud pmichaud 1024 Feb 10 11:51 . drwxrwxrwx 8 pmichaud pmichaud 1024 Jan 23 11:58 uploads drwxrwxrwx 2 pmichaud pmichaud 54272 Feb 10 15:29 wiki.d Vermeiden von für jedermann beschreibbaren VerzeichnissenDennoch mögen viele Leute diese Einstellung mit Schreibrechten für jedermann (******rwx) nicht. Die einzige praktikable Möglichkeit, diese Schreibrechte für jedermann zu eliminieren, ist, den Webserver und den Besitzer des Accounts zum 'owner' und zur 'group' der Verzeichnisse und der Dateien darin zu machen. Da Unix einem Nicht-Superuser eigentlich nicht erlaubt, die 'owner' von Verzeichnissen und Dateien zu ändern, die schon existieren, müssen wir sicherstellen, dass sie mit den passenden Besitzverhältnissen von Anfang an erzeugt werden. Damit die Verzeichnisse dem Webserver-Account gehören, lassen wir PmWiki sich um das Erzeugen der Verzeichnisse kümmern. Das heißt, wir vergeben vorübergehend Schreibrechte für das Elternverzeichnis und starten dann PmWiki, so dass es die Verzeichnisse anlegt. Außerdem möchten wir, dass die neu erzeugten Verzeichnisse die gleiche Gruppe haben wie der Besitzer des Accounts, damit er Dateien dieser Verzeichnisse entfernen oder manipulieren kann. Darum benutzen wir Unix' setgid-Fähigkeiten (2777 oder '***rws***'-Rechte), damit alle neu erzeugten Dateien die Gruppenrechte vom Verzeichnis erben. Um Verzeichnisse mit Schreibrechten für jedermann zu vermeiden, benutzen Sie die folgenden Anweisungen anstatt der obigen Beschreibung. Wenn Sie die Verzeichnisse wiki.d/ und uploads/ bereits angelegt haben, benutzen Sie 'chown' und 'chmod', um die folgenden Resultate zu erreichen. $ pwd /home/pmichaud/public_html/pmwiki $ chmod 2777 . $ ls -ld . drwxrwsrwx 10 pmichaud pmichaud 4096 May 28 09:55 . # <-- execute pmwiki.php script from web browser --> $ ls -ld . uploads wiki.d drwxrwsrwx 10 pmichaud pmichaud 4096 May 28 09:55 . drwxrwsr-x 2 nobody pmichaud 4096 May 28 09:55 uploads drwxrwsr-x 2 nobody pmichaud 4096 May 28 09:55 wiki.d $ chmod 755 . drwxr-xr-x 10 pmichaud pmichaud 4096 May 28 09:55 . drwxrwsr-x 2 nobody pmichaud 4096 May 28 09:55 uploads drwxrwsr-x 2 nobody pmichaud 4096 May 28 09:55 wiki.d Jetzt gehören die beiden Verzeichnisse uploads/ und wiki.d/ dem User 'nobody', d. h. der Webserver kann in ihnen schreiben. Wir haben keine Schreibrechte für jedermann in den Verzeichnissen und der Besitzer des Accounts (pmichaud) hat immer noch Schreibrechte kraft seiner Gruppenzugehörigkeit und -rechte. Das 'setgid'-Bit sichert darüber hinaus, dass jede Datei und jedes Verzeichnis, die/das in uploads/ und wiki.d/ erzeugt wird, ebenfalls zu der Gruppe 'pmichaud' gehört. Safe modeABER, wenn eine Site in PHPs "safe_mode" läuft, dann funktioniert die 'lass PmWiki sich um die Verzeichnisse kümmern'-Variante nicht, da PHP Dateien nur in Verzeichnissen jenes Benutzers erzeugt, dem auch das PHP-Skript selbst gehört. Deshalb kann PmWiki (Apache) die Verzeichnisse in diesem Fall nicht erzeugen, sonst wird safe_mode sich beklagen, sowie PmWiki eine Datei in diese Verzeichnisse zu schreiben versucht. Der einzige Weg, die Dinge im safe_mode zum Laufen zu kriegen, ist, die Verzeichnisse mit der Hand anzulegen und die Rechte auf 777 (rwxrwxrwx) zu setzen, wie es zu Beginn diese Artikels beschrieben wurde. PHP als Besitzer des Skripts laufen lassenEs gibt ein paar Webserver und PHP-Installationen, die so konfiguriert sind, dass ein PHP-Script mit der gleichen Identität wie der Besitzer des Skripts ausgeführt wird. Das wird oft 'suexec PHP' genannt oder sogar einfach 'suPHP'. In dem Fall, da PHP schließlich mit der Identität des Besitzers des Accounts ausgeführt wird, läuft alles einfach so 'out of the box' ohne eigenes Zutun. PmWiki erzeugt alle Verzeichnisse wie sie gebraucht werden und Rechte sind am Ende kein Thema. KochbuchskriptenOkay, sehen wir uns nun die Kochbuchskripten an. Wenn ein Skript Dateien enthält, die es für den Browser erreichbar zur Verfügung stellen will, sollten diese Dateien grundsätzlich irgendwo in der pub/-Hierarchie untergebracht werden und mittels '$PubDirUrl' referenziert werden. Wenn ein Kochbuchskript Dateien auf die Platte *schreiben* muss, dann gelten für das entsprechende Verzeichnis die gleichen Regeln wie für die Wenn z. B. das Kochbuchrezept 'frobot' eine .css-Datei ausliefern will, dann sollte die Datei etwa nach Als alternatives Beispiel dient das Cookbook:MimeTeX-Rezept, dass in der Lage sein möchte, zwischengespeicherte Bilder für die mathematischen Formeln zu erzeugen und diese dem Webbrowser verfügbar zu machen. Deshalb nutzt MimeTex ein Siehe auch
Übersetzung von PmWiki.FilePermissions, Originalseite auf PmWikiDe.FilePermissions — Backlinks
|