PDA

Bekijk Volledige Versie : Apache suExec (wat doe ik nou fout)



rjonker
23/12/05, 13:11
Hallo,

Graag zou ik reacties ontvangen van mensen die mij in de goede richting kunnen sturen met betrekking tot het volgende.

Voor mijn afstudeeropdracht heb ik een aantal .sh scripts geschreven. Deze dienen door een php pagina aangeroepen te worden. Omdat de scripts niet moeten worden uitgevoerd als de 'apache' user (maar door andere op het systeem aanwezig zijnde accounts), heb ik op google rondgebazuind en nu ben ik aan het spelen met suExec.

Dat hele spulletje heb ik geinstalleerd (apache gerecompiled met suExec opties) en volgens de apache log is dat allemaal in orde:



[Thu Dec 22 20:35:46 2005] [notice] Apache/1.3.34 (Unix) PHP/5.1.1 configured -- resuming normal operations
[Thu Dec 22 20:35:46 2005] [notice] suEXEC mechanism enabled (wrapper: /usr/local/apache/bin/suexec)


Maar, helaas, als ik nu een van mijn .sh scripts wil uitvoeren vanuit PHP, gaat het mis. In de error.log van apache krijg ik een permission denied error. De suexec.log blijft leeg.

In mijn vorige apache omgeving werkten de .sh scripts (in combinatie met 'sudo' en '/etc/sudoers') dus aan mijn scripts ligt het niet. Voor zover ik kan zien voldoet alles aan de voorwaarden van het security model op http://httpd.apache.org/docs/1.3/suexec.html.

Kan iemand mij een duwtje in de goede richting geven? Waarom wordt er niks in suexec.log geschreven (is er misschien toch iets mis gegaan tijdens het compilen)? Of zie ik misschien iets anders over het hoofd?

Bij voorbaat dank,
Robert

HBCS
23/12/05, 13:21
zo te zien staan de rechten niet goed

MMaI
23/12/05, 14:08
is het betreffende script eigendom van de gebruiker waaronder je hem uit wil voeren?

Zo nee is het logisch dat hij deze fout geeft, want suExec is speciaal bedoelt om dat te voorkomen.

rjonker
23/12/05, 14:41
Bedankt voor de reacties.

@HBCS: Voor zover ik kan zien staan de rechten goed (op het script dat ik uit wil voeren staat chmod 755). Op de onderliggende directory's idem.

@MMaI: de eigenaar van het script dat ik uit wil voeren is hetzelfde als de User/Group die ik in de virtualhost in de apache config heb ingesteld.

Vaag gedoe allemaal weer :(

MMaI
23/12/05, 18:50
ik dacht dat met suExec geen chmod hoger dan 644 werd gebruikt? ben ik nu fout, of zit daar je probleem?

evilnerds.com
27/12/05, 12:44
suEXEC is alleen voor CGI/SSI programma's. Waarschijnlijk draait php bij jou als Apache Module en niet als CGI script. PHP draait dan gewoon onder de rechten van de webserver, net als het sh script wat je execute.

Wat jij wilt kan je bereiken met suPHP of met suEXEC icm PHP-CGI.

Waar het om gaat is dat PHP met de rechten van de betreffende gebruiker draait. Dan doet het sub-proces (je sh script) dat ook meteen!

Een andere oplossing is om je sh scripts te suid chmod'den. Dan draaien ze altijd onder de user van de eigenaar.

rjonker
27/12/05, 15:53
@evilnerds.com: Bedankt voor je reactie. Ik ben nu aan het stoeien met suPHP. Heb nu wel last van Internal server errors maar ik ga eerst even googlen etc voordat ik met nieuwe vragen kom ;)

Het suid chmod'den is helaas geen optie, omdat de scripts door meerdere gebruikers uitgevoerd moeten worden en omdat ik liever geen kopie van de script directory maak voor iedere vhost.

evilnerds.com
28/12/05, 00:30
Dan zal je alsnog voor elke gebruiker aparte scripts nodig hebben om deze als de betreffende gebruiker uit te voeren.

Volgens mij zijn suPHP, suEXEC en SUID allemaal gebaseerd op het principe dat de 'owner' van het script de rechten overneemt van het uitvoerende script. 1 script kan dus niet de rechten overnemen van verschillende gebruikers. De uitvoerende gebruiker is altijd gelijk aan de eigenaar van het script.