PDA

Bekijk Volledige Versie : mod_ruid maar ik zie toch apache staan



Boyke
27/12/09, 19:07
Ik heb zojuist wat lopen experimenteren met mod_ruid. Wat ik raar vind is dat wanneer ik in 'top' kijk ik toch het httpd process met de user apache zie draaien. Komt dit doordat het toch als apache binnenkomt en daarna pas onder de user uitgevoerd wordt of doe ik iets fout?

Mijn php scripts maken nu in ieder geval wel mapjes e.d. aan onder de correcte user.

Randy
27/12/09, 19:13
Ik heb zojuist wat lopen experimenteren met mod_ruid. Wat ik raar vind is dat wanneer ik in 'top' kijk ik toch het httpd process met de user apache zie draaien. Komt dit doordat het toch als apache binnenkomt en daarna pas onder de user uitgevoerd wordt of doe ik iets fout?

Mijn php scripts maken nu in ieder geval wel mapjes e.d. aan onder de correcte user.

De switch is te snel waarschijnlijk. Ga eens flink F5'en op een wat zwaarder script (Magento?) en kijk dan nog eens...

t.bloo
27/12/09, 19:21
Het request komt bij Apache aan en wordt dan doorgezet naar de user uit de configuratie of van de opgevraagde file.

De daadwerkelijke uitvoering van het script gebeurt dus als die nieuwe user.

Dit kan zoals gezegd weer snel afgelopen zijn en dan is het proces weer terug bij de Apache user.

(F5'en in top :))

Randy
27/12/09, 19:27
Eigenlijk htop gebruiken in plaats van top. Heb je leukere kleurtjes. :-)
(Deze staat in de rpmforge repository voor de Redhat gebruikers)

Mocht het echt niet luken, geef even een domein door, dan zal ik mijn botnet eens los laten :lovewht:

Boyke
27/12/09, 19:44
Even een sleep bovenaan in mn script gezet. Nu zie ik dat die inderdaad onder de correcte user runt.

Sander-
28/12/09, 00:44
Even een sleep bovenaan in mn script gezet. Nu zie ik dat die inderdaad onder de correcte user runt.

Mocht je dit nog een keer willen testen kun je misschien even scrippie schrijven wat een file wegzet op disk, die heeft dan keurig de juiste user (of niet ;-))

Randy
28/12/09, 01:22
Mocht je dit nog een keer willen testen kun je misschien even scrippie schrijven wat een file wegzet op disk, die heeft dan keurig de juiste user (of niet ;-))

Zonder irritante (en onveilige) 777 chmods of vreselijke apache:apache bestanden. Heerlijk!

Boyke
28/12/09, 21:52
Iemand suggesties / dingen waar ik op moet letten wanneer ik dit wil gaan gebruiken i.c.m. DirectAdmin?

Als ik het goed heb, moet ik via de custombuild apache 2 compilen. Blijft dit allemaal gewoon werken na een DirectAdmin update?

Mikey
28/12/09, 23:02
niemand ?


<?php
echo exec('whoami');
?>

en als dat geen resultaat geeft probeer eens:

<?php
echo exec('/usr/bin/whoami');
?>

Boyke
28/12/09, 23:03
Had inderdaad ook gekunt, echter heb ik exec, shell_exec e.d. ge-disabled.

Mikey
28/12/09, 23:04
Had inderdaad ook gekunt, echter heb ik exec, shell_exec e.d. ge-disabled.

dan enable je hem om te checken wat de user is. Beter dan een sleep of 100x f5....

Randy
28/12/09, 23:36
Iemand suggesties / dingen waar ik op moet letten wanneer ik dit wil gaan gebruiken i.c.m. DirectAdmin?

Als ik het goed heb, moet ik via de custombuild apache 2 compilen. Blijft dit allemaal gewoon werken na een DirectAdmin update?

Ja. Ook als je Apache gaat rebuilden. Als je het goed doet, enable je mod_expires ook meteen (Ideaal voor Magento of de WP supercache plugin).
De configure dir wel even naar custom kopieren, zodat bij een build update de configbestanden niet overschreven worden. En kijk even in PHP of SOAP al aan staat, in de 1.1 en oude 1.2 versies van het build script, staat deze standaard uit. O.a. Magento wil SOAP hebben.

Boyke
29/12/09, 10:33
De configure dir wel even naar custom kopieren.

Dit stukje snap ik niet helemaal...

Boyke
29/12/09, 10:43
En wanneer ik nu iets via de FTP upload komt de owner wel goed te staan, maar de group komt op daemon?

Randy
29/12/09, 13:00
Dit stukje snap ik niet helemaal...

Een stukje uit de wiki. Zelf even ontleden, het is 'internal only' geschreven met een knipoog.
Als je niet snapt wat deze dingen doen, begin er dan niet aan.

-----------------------------[copy paste]----------------------
cd /usr/local/directadmin/custombuild
cp -Rp configure custom
nano custom/ap2/configure.php5

Directadmin draait PHP onder de user apache. Dit is vies, ranzig en smerig tegelijk. Je wil PHP onder de user draaien. Dit kan met suPHP, maar dat is traag, omdat er steeds CGI processen gestart moeten worden en dit werkt _niet_ via FastCGI. Misschien zou het werken als we de fcgi-deamon van lighthttp gebruiken, maar configureren is dan weer een ramp, en we zijn natuurlijk lui. De gemiddelde hostert zit overdag namelijk in de schoolbankjes of slaapt net zoals ik uit tot 13.37 uur. We gaan daarom mod_ruid installeren op Apache. Hiervoor moeten we even wat templates aanpassen. Alles over mod_ruid lees je in dit draadje (http://www.webhostingtalk.nl/scripting-en-programmeren/103250-mod_suid-2-mod_ruid-ervaringen-en-tips.html) in op WHT.

yum install libcap-devel
cd /usr/src
wget http://websupport.sk/~stanojr/projects/mod_ruid/mod_ruid-0.6b.tar.gz (http://websupport.sk/%7Estanojr/projects/mod_ruid/mod_ruid-0.6b.tar.gz)
tar -xzf mod_ruid-0.6b.tar.gz
cd mod_ruid-0.6b
/usr/sbin/apxs -a -i -l cap -c mod_ruid.c
cd /usr/local/directadmin/data/templates
cp virtual_host2* custom/
cd custom
wget http://crew.pcextreme.nl/files/linux/util/directadmin/da_vhosts_templates_apache2_mod_ruid.tar.gz
tar -xzf da_vhosts_templates_apache2_mod_ruid.tar.gz
rm -f da_vhosts_templates_apache2_mod_ruid.tar.gz
nano /etc/httpd/conf/httpd.conf

Voeg toe boven "ServerAdmin admin@localhost": (Verander dit meteen even naar je eigen adres)
# mod_ruid
RMode config
RUidGid apache apache

echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue


/etc/init.d/httpd restart

Boyke
29/12/09, 15:56
Na wat stoeien is het me gelukt!

Ik in options.conf apache_ver = 2.2 gezet en vervolgens alles opnieuw gebuild, maar naar mijn idee is het toch voldoende als je alleen apache en php opnieuw build na deze wijziging?

En wat iemand een oplossing hiervoor? Wanneer ik nu iets via de FTP upload komt de owner wel goed te staan, maar de group komt op daemon?

SebastiaanStok
29/12/09, 19:52
@Randy: Dat is de versie zonder path die schijnt verschillende problemen te hebben.

Hier een interessant stukje over mod_ruid :)
http://wiki.phpfreakz.nl/Apache_Veilig_Maken#mod_ruid

Als je wilt dat het script niet direct stopt hoef je niet gelijk met allerlei moeilijke dingen in de weer ;)

Dit is voldoende:


<?php
echo 'hoi';

sleep(30);
?>


Het proces blijft actief maar kost niets.