Sönke Tesch: mod_php und Apache als User 'nobody'

Beitrag lesen

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

Folgende Probleme sind bei dieser Konstellation aufgetaucht:

1.) Bisher hatte ich so verstanden, daß PHP im safe_mode die UID des Ausführenden und des Besitzers einer Datei prüft, und nur bei Übereinstimmung das Ausführen zulässt.

Nein.

"When safe_mode is on, PHP checks to see if the owner of the current script matches the owner of the file to be operated on by a file function."

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.

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.

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.

Gruß,
  soenk.e