AlexBausW: mod_php und Apache als User 'nobody'

Beitrag lesen

Hallo

DocumentRoot /home/userXX/html
User userXX
Group users
ScriptAlias /cgi-bin/ /home/userXX/html/cgi-bin/
php_admin_value open_basedir /home/userXX
php_admin_value upload_tmp_dir /home/userXX/phptmp

[...]

PHP prüft lediglich, ob eine zu bearbeitende Datei dem Benutzer gehört, dem auch das Skript gehört, welches diese Datei bearbeiten will. Mit dem Benutzer, unter dem Apache läuft, hat das nichts zu tun.

Daß diese Prüfung ein fürchterliches Hindernis sein kann, hast Du gerade erlebt. Insbesondere, wenn PHP auf Dateien zugreifen soll, die es selbst geschrieben hat, gibt es sinnloserweise Ärger, weil die Dateien vom Apache-Benutzer erzeugt wurden, nicht vom Skripteigentümer.

Irgendwie finde ich das von den Entwicklern nicht weit sehr gedacht (ich will natürlich niemandem zu nahe treten :). Wieso kann PHP im safe_mode eine Datei nicht lesen, die durch ein PHP-Skript des Nutzers erstellt wurde? (wieso das so ist ist klar, aber nicht warum das so implementiert wurde :))

Es gibt anscheinend eine Möglichkeit, diese Prüfungen irgendwie nur auf Gruppenbasis durchzuführen oder ähnliches. Schau dazu bitte mal in Deine php.ini, in der eh miesen Seite zur PHP-Konfiguration ist diese Einstellung nicht beschrieben.

Dann müsste ich aber den Apachen der Gruppe der User zuordnen (users), oder alle Userverzeichnisse auf 'nobody' "umchownen". Irgendwelche Probleme mit umask höre ick aber jetzt schon "trapsen". Neu erzeugte Verzeichnisse sind im Momement ja auch für die Gruppe nicht beschreibbar (was imho auch sinnvoll ist und so bleiben sollte).

Ich habe safe_mode wieder abgeschaltet, und vertraue im Moment nur auf open_basedir. Das scheint auch zu genügen, zumindest um das Einlesen "fremder" Dateien zu unterbinden. Was allerdings bei system() usw. passieren kann, bzw. welchen Einfluss open_basedir darauf nimmt, habe ich nocht nicht herausbekommen.
Allerdings kann zwar jetzt PHP die selbst erzeugten Dateien und Verzeichnisse lesen - ein User kann diese aber sicherlich nicht per FTP oder über ein CGI-Skript löschen. :(

Andere Möglichkeit wäre, PHP über CGI laufen zu lassen. Dann können alle PHP-Skripte unter dem Benutzer laufen, dem die Skripte gehören und dementsprechend werden Dateisystem-Zugriffsrechte auch sinnvoll beachtet.
Diese Lösung hat dann aber wieder andere Nachteile.

Darauf wollte ich eigentlich gerne verzichten, zumal CONFIXX afaik mod_php benötigt :) Kann man Module und Interpreter parallel bzw. <VirtualHost>-abhängig unter einem Apachen laufen lassen?

Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart