Toon posts:

debian apache suexec probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb nu al een tijdje een server draaien. Dit is een stable debian woody server met een 2.4.20 kernel. Dit draait allemaal lekker, onderandere apache draait erop maar nu ik bezig ben met het ontwikkelen van een site en ik schrijfrechten op directories nodig heb is er een probleemje opgetreden.

Wat ik heb geinstalleerd:
Apache 1.3.26
php-cgi 4.1.2
suexec

Apache heeft altijd als www-data gedraait zoals debian voorstelt, nooit een probleem tot je met php mappen en files wil gaan aanmaken. Op het net gezocht de nodige tutorials doorgenomen en uiteindelijk suexec gekozen boven suphp omdat deze nogal wat overhead door fork processen schijnt te creeeren. Dus php-cgi geinstalleerd suexec gecontroleerd maar die was standaard mee gecompiled met apache dus dat had ik allemaal al. De DSO van php uitgezet een AddHandler toegevoegt voor cgi-script en mijn options aangepast in mijn httpd.conf zoals de tutorials zeiden en het moest draaien. Eerst de nodige errors gehad met permature end of headers als melding. Deze uiteindelijk voorkomen door de interpreter bovenaan de php files te zetten (#!/usr/bin/php4).

Je zou denken wat zeurt ie nou het werkt toch maar niet optimaal, bijvoorbeeld phpsysinfo of phpmyadmin draaien ook op de server deze hebben geen interpreter bovenaan de files staan dus deze geven allemaal fouten. Na veel zoeken op internet niks kunnen vinden om deze fout te voorkomen of om suexec standaard de goede interpreter te laten pakken. Ik weet dat het moet kunnen aangezien hosting bedrijven als Lycos het ook hebben draaien.

Nu is dus mijn vraag aan jullie heeft er iemand een oplossing om te omzeilen dat je de interpreter bovenaan een php file moet zetten?

  • ZEN
  • Registratie: April 2000
  • Laatst online: 10-03-2021

ZEN

huh? wat doe ik hier?

Verwijderd schreef op 17 december 2003 @ 22:58:
Wat ik heb geinstalleerd:
Apache 1.3.26
php-cgi 4.1.2
suexec

Eerst de nodige errors gehad met permature end of headers als melding. Deze uiteindelijk voorkomen door de interpreter bovenaan de php files te zetten (#!/usr/bin/php4).
Dat is natuurlijk ook niet zo gek als je php-cgi hebt geinstalleerd. Dan kan je namelijk zo je php files executen. Handig voor op de command line.

Wat je moet doen is nog even php4 apt-getten. Je hebt nu alleen de cgi module, maar je moet ook de php hebben die met apache samen werkt.

Linux server installatie en beheer (clusters failover loadbalancing): http://www.virtualconcepts.nl/


Verwijderd

Topicstarter
Deze heb ik er ook opstaan, maar deze is wat ik opmaak uit de tutorials zeker niet nodig als je php als cgi gecompiled hebt

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

wat ik niet uit je verhaal kan opmaken is waarom je PHP niet gewoon als module draait; maar als CGI? PHP is bedoeld om als module vanuit Apache te worden gerund; dit is sneller en veiliger. Ook zal dit je problemen met de missende shebang oplossen. :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • rvm
  • Registratie: November 2000
  • Niet online

rvm

PHP als module draaien veiliger? Hoe voorkom je dan als je meerdere virtualhosts hebt dat gebruikers elkaars bestanden kunnen lezen?

Om die shebang te vermijden, dit lijkt me een mooie oplossing:
http://www.localhost.nl/patches/

[ Voor 28% gewijzigd door rvm op 17-12-2003 23:51 ]


Verwijderd

Topicstarter
Ik had php ook altijd als module draaien dat werkte perfect ik heb hem hierna alleen als cgi geinstalleerd omdat ik overal in de tutorials las dat je php als cgi gecompileerd moest hebben wou je suexec kunnen draaien.
Maar zou je kunnen aangeven wat ik in apache moet zetten wil ik het kunnen gebruiken als php als module geinstalleerd is wat ik nu heb toegevoegd is
AddHandler cgi-script .php .php3 .php4
Options +ExecCGI
Deze heb ik toegevoegd aan de directory van public_html zodat apache daar naar de goede user gaat. Als ik nu zonder #!/usr/bin/php4 draai krijg ik in apache een Premature end of header error wat dus als resultaat heeft een error 500 van apache.

het script dat ik test is
[code=php]<? echo phpinfo(); ?>

ik heb de rechten van die file op 755 staan de owner van de map en de file zijn dezelfde. Alles lijkt mij goed te staan maar dat is blijkbaar niet zo

  • rvm
  • Registratie: November 2000
  • Niet online

rvm

Hmmm... ik heb dit in httpd.conf staan:
code:
1
2
Action php-script /cgi-bin/php
AddHandler php-script .php

Maar dan moet de php binary dus wel in de cgi-bin dir staan.
Die php-suexec patch die je vindt op de pagina waar ik net naar linkte, zou dat moeten omzeilen, zodat je de php binary op 1 standaard plek neerzet. Dat heb ik zelf nog niet uitgeprobeerd.

[ Voor 6% gewijzigd door rvm op 18-12-2003 00:00 ]


  • ZEN
  • Registratie: April 2000
  • Laatst online: 10-03-2021

ZEN

huh? wat doe ik hier?

Verwijderd schreef op 17 december 2003 @ 23:53:
Ik had php ook altijd als module draaien dat werkte perfect ik heb hem hierna alleen als cgi geinstalleerd omdat ik overal in de tutorials las dat je php als cgi gecompileerd moest hebben wou je suexec kunnen draaien.
Maar zou je kunnen aangeven wat ik in apache moet zetten wil ik het kunnen gebruiken als php als module geinstalleerd is wat ik nu heb toegevoegd is
AddHandler cgi-script .php .php3 .php4
Options +ExecCGI
Deze heb ik toegevoegd aan de directory van public_html zodat apache daar naar de goede user gaat. Als ik nu zonder #!/usr/bin/php4 draai krijg ik in apache een Premature end of header error wat dus als resultaat heeft een error 500 van apache.

het script dat ik test is
[code=php]<? echo phpinfo(); ?>

ik heb de rechten van die file op 755 staan de owner van de map en de file zijn dezelfde. Alles lijkt mij goed te staan maar dat is blijkbaar niet zo
je kan php zowel als cgi hebben geinstalleerd en daarnaast in combinatie met php/apache. het enige wat je daar extra voor opgeeft bij het compileren is de apache source dir. Maar met debian moet het helemaal soepel gaan. tevens lijkt het me dat je dan dit moet doen:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Linux server installatie en beheer (clusters failover loadbalancing): http://www.virtualconcepts.nl/


Verwijderd

Topicstarter
Ik heb php dus niet in me cgi dir staan omdat de officele site van php dat afraad omdat hij dan in je web-tree staat en iedereen er dus bij kan.
Ik heb echter ff jullie suggesties uitgeprobeerd en dus de regels
Action cgi-script /usr/bin/php4
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

toegevoegd maar dit resulteert nog steeds in een error. Mijn logs zeggen dit
error.log: Premature end of script headers: /home/gert/public_html/phpinfo.php
suexec.log: info: (target/actual) uid: (gert/gert) gid: (users/users) cmd: phpinfo.php

zo te zien gaat het met suexec wel goed deze wisselt netjes van user maar gaat het ergens anders fout. Ik heb al op deze fout gezocht veel resultaten veel geprobeerd maar geen verbeteringen. Als ik echter weer #!/usr/bin/php4 bovenaan zet doet het script het gelijk weer maar dat wil ik dus niet.

  • rvm
  • Registratie: November 2000
  • Niet online

rvm


Verwijderd

Topicstarter
Zo het is gelukt, was bezig met een nieuwe package te bouwen met de patch van www.localhost.nl erin maar toen ik op http://www.pookey.co.uk/php-security.xml keek leek me dat veel makkelijker en uiteindelijk werkt het perfect, bedankt allemaal
Pagina: 1