Hi!
Irgendwie erscheint mir das gerade unlogisch, denn:
Kommt es nicht auf das Selbe raus wie wenn man SAFE MODE deaktiviert?
Ja, so würde es halt funktionieren wenn man den safe_mode nicht deaktivieren könnte. Da man den safe_mode deaktivieren kann bringt es Dir (und dem Provider und den anderen Kunden) IMHO auch nicht wirklich viel diesen eingeschaltet zu lassen.
Dann haben andere User auf dem Webserver auch Zugriff auf Dateien mit den Rechten (z.B. 777)
Das Problem bei mod_php ist halt, dass alle PHP-Script unter einem einzigen User laufen - bei Dir anscheinend wwwrun. Das heißt, prinzipiell haben alle Scripte von allen Usern dieselben Rechte, sie können gegenseitig Dateien lesen, je nach Konfiguration sogar Dateien verändern. Safe_Mode versucht dies einzuschränken, aber den PHP-Entwicklern selber ist klar dass dies nicht funktionieren kann: "Bezogen auf die Systemarchitektur, ist es der falsche Ansatz, diese Probleme innerhalb der PHP Schicht lösen zu wollen."
Aufgrund sich häufender Sicherheits-Probleme in vielen Webanwendungen haben die PHP-Devs dies kürzlich in "A Note on Security in PHP" konkretisiert:
For Local exploits we mostly hear about open_basedir or safemode
problems on shared virtual hosts. These two features are there as a
convenience to system administrators and should in no way be thought
of as a complete security framework. With all the 3rd-party libraries
you can hook into PHP and all the creative ways you can trick these
libraries into accessing files, it is impossible to guarantee security
with these directives. The Oracle and Curl extensions both have ways
to go through the library and read a local file, for example. Short
of modifying these 3rd-party libraries, which would be difficult for
the closed-source Oracle library, there really isn't much PHP can
do about this.
Wenn man safe_mode für bestimmte Kunden auschaltet, ist selbst der geringe Schutz den safe_mode bietet weg.
Daher setzen "gute" Provider anstatt mod_php lieber cgi oder fastcgi ein, da es hiermit die Möglichkeit gibt, PHP-Script unter einer anderen UID auszuführen, als den Webserver. Somit laufen die Scripte eines Anwenders immer unter seiner eigenen UID, so kann man mit den gewöhnlichen Unix-Dateirechten verhindern dass fremde User Zugriff auf eigene Scripte erhalten, und hat gleichzeitig nicht solche Probleme wie Du sie jetzt hast.
Grüße
Andreas
SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/