# PHP - Verzeichniszugriff einschränken



## zinion (12. Dezember 2003)

Hallo Leute!

Ich betreibe einen Apache 1.3 Webserver unter Windows, unter anderem mit PHP-Modul.

Es sind mehrere virtuelle Hosts für verschiedene Domains eingerichtet. Jetzt habe ich folgendes Problem:
Wenn jemand ein PHP-Skript schreibt, kann er damit ja auf die ganze HDD zugreifen. Kann ich das irgendwie so konfigurieren, daß PHP-Scripts nur innerhalb des Document Root (und untergeordnetten Verzeichnissen) des jeweiligen Virtual Host ausführbar sind?

mfG

zinion


----------



## Christian Fein (12. Dezember 2003)

man chroot


----------



## zinion (12. Dezember 2003)

man chroot?

Also ich kenne den man-Befehl und ich liebe ihn, leider gibt es den nur unter Linux genau wie chroot. Ich betreibe den Server allerdings unter Windows, wie ich oben ja schon geschrieben habe.

Ausserdem will ich ja nicht den Verzeichniszugriff für den Web / PHP-Server im allgemeinen einschränken sondern ich will ihn spezifisch für die einzelnen Virtual Hosts die ich im Apache habe einschränken.
Bei einer standardmäßigen PHP-Installation ist es doch möglich, daß ein User des Webservers auf Dokumente zugreift, die ausserhalb seines Document Root liegen (indem er ein PHP-Script schreibt und darin einfach D:\ oder sonstwas verwendert). Das soll aber nicht möglich sein. Oder lässt der Apache das gar nicht zu?

edit:
 Habs getestet, man kann mit PHP-Skripten auf die ganze Platte zugreifen, auch ausserhalb des Document Root eines Virtual Hosts. Das möchte ich gerne unterbinden.

edit 2:
Ich habe eine Lösung gefunden. Ich veröffentliche sie mal hier, falls jemand dasselbe Problem hat - gilt unter Linux gleichermaßen wie unter Win:


> There is a better solution than starting every virtual host in a seperate instance, which is wasting ressources.
> 
> You can set open_basedir dynamically for every virtual host you have, so every PHP script on a virtual host is jailed to its document root.
> 
> ...


Für alle die des Englischen nicht mächtig sind eine Kurzbeschreibung:

PHP muss im safe-mode laufen und den VirtualHosts die eingeschränkt werden sollen muss die php_admin_value open_basedir Direktive vergeben werden, so wie im Example oben.

mfG

zinion


----------



## Arne Buchwald (14. Dezember 2003)

Jap, safe_mode ist die einzige Möglichkeit. Vielleicht wäre ein Blick auf http://www.suPHP.org noch interessant.


----------



## Christian Fein (14. Dezember 2003)

> _Original geschrieben von zinion _
> *man chroot?
> 
> Also ich kenne den man-Befehl und ich liebe ihn, leider gibt es den nur unter Linux genau wie chroot. Ich betreibe den Server allerdings unter Windows, wie ich oben ja schon geschrieben habe.
> *



Oh habe nur PHP - Apache gelesen und bin von Unix ausgegangen.
Ich hoffe für dich das du den Apache auf Windows nicht als Produktivumgebung betreibst.

grüsse


----------

