Ik heb een aantal virtual hosts draaien op een Debian/Sarge systeem met Apache2. Dit heb ik altijd via mod_php5 (van dotdeb.org) gedaan zodat ik gemakkelijk via de Apache-config per virtual host PHP-instellingen kon doorgeven.
Aangezien de server een shared webserver is moest ik minstens een open_basedir restrictie instellen om te voorkomen dat mensen bestanden van anderen kunnen lezen. Safe_mode gaat vanzelfsprekend ook aan, anders kun je met een simpele exec() nog alles doen. Ook wil ik dat de sessions en temporary uploads in een speciale map per gebruiker komen, zodat deze goed gescheiden blijven. Dit is goed te regelen met de upload_tmp_dir en session.save_path instellingen.
Echter wil ik de gebruikers de mogelijkheid geven om wél system calls te doen door middel van exec(), zodat ze niet beperkt blijven tot PHP maar ook dingen daar buiten kunnen doen. Dit uiteraard onder hun eigen useraccount; hiervoor gebruik ik suPHP om een PHP5-cgi binary aan te roepen onder de useraccount die bij de betreffende virtual host hoort. Dit werkt! Alleen zit ik nu met het probleem dat ik de locatie waar de sessions en tijdelijke uploads worden opgeslagen alleen kan instellen via de globale php.ini. Hoe kan ik dit weer per-user regelen?
Verder las ik in de documentatie van suPHP dat het enorm gevaarlijk is om tegelijkertijd de suPHP CGI interface aan te bieden én de PHP5-module voor Apache2 te draaien. Weet iemand waarom dit is? (dit wisten ze weg te laten uit de documentatie)
Aangezien de server een shared webserver is moest ik minstens een open_basedir restrictie instellen om te voorkomen dat mensen bestanden van anderen kunnen lezen. Safe_mode gaat vanzelfsprekend ook aan, anders kun je met een simpele exec() nog alles doen. Ook wil ik dat de sessions en temporary uploads in een speciale map per gebruiker komen, zodat deze goed gescheiden blijven. Dit is goed te regelen met de upload_tmp_dir en session.save_path instellingen.
Echter wil ik de gebruikers de mogelijkheid geven om wél system calls te doen door middel van exec(), zodat ze niet beperkt blijven tot PHP maar ook dingen daar buiten kunnen doen. Dit uiteraard onder hun eigen useraccount; hiervoor gebruik ik suPHP om een PHP5-cgi binary aan te roepen onder de useraccount die bij de betreffende virtual host hoort. Dit werkt! Alleen zit ik nu met het probleem dat ik de locatie waar de sessions en tijdelijke uploads worden opgeslagen alleen kan instellen via de globale php.ini. Hoe kan ik dit weer per-user regelen?
Verder las ik in de documentatie van suPHP dat het enorm gevaarlijk is om tegelijkertijd de suPHP CGI interface aan te bieden én de PHP5-module voor Apache2 te draaien. Weet iemand waarom dit is? (dit wisten ze weg te laten uit de documentatie)