[MEGOLDVA] apache 1.3 suexec nem mukodik

Hello!
Debian Etch, apache 1.3, PHP4 mint apache modul. PHP5 is kellene, apt-get install php5-cgi.
Meghivva a phpinfot (weben) szepen irja, hogy 4 vagy 5 php hajtja vegre. De nem lesz jo, aki a php5-os
proggit futtatja, azzal a felhasznaloval barmit futtathat....
Szoval, aki php5-ot akar, annak legyen sajat usere (10000 uid, /bin/false belepes, home dir nincs meg miegymas) es
igy futtassa a cuccot.
Reszlet a virt. host confjabol:

User xy.hu
AddHandler php5-script .php
ScriptAlias /php5 /usr/lib/cgi-bin/php5
Action php5-script "/php5"
DocumentRoot /hosting/xy.hu/home/php5
ServerName php5.xy.hu

Az apache futtatoja a "webadmin" user, az _osszes_ (minden host) file tulaja "webadmin". Ha a fentiben a
User xy.hu helyett
User webadmin van vagy ures, akkor nincs gond, csak sajna a php script a "webadmin" userrel futott le.
Ha nem webadmin az user, akkor viszont hiba:
/var/log/apache/suexec.log:

[2009-07-02 13:15:16]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 13:17:53]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 13:19:08]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 13:51:44]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:18:03]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:46:51]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:46:53]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:47:24]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:47:25]: crit: calling user mismatch (webadmin instead of www-data)
[2009-07-02 16:52:09]: crit: calling user mismatch (webadmin instead of www-data)

Valami otlet? Biztos halal egyszeru es valamit nem veszek eszre, de nem ertem....

UI: itt jegyzem meg, ha valaki hozzam hasonloan fel napot tokol azzal, hoyg Debian etch , Apache1 alatt bekapcsolja a suexecet:
cp /usr/lib/apache/suexec.disable /usr/lib/apache/suexec

Ez is vicces volt, mert valahogy a Debianos apache doksi erre marhara nem tert ki...Vagy nem talaltam.

Hozzászólások

[2009-07-02 16:52:09]: crit: calling user mismatch (webadmin instead of www-data)

ez eleg beszedes uzenet, nem vagod?

t

Koszi. Hetvegen elmondok egy imat, belefoglalva a neved :)

Mondjuk, neztem az apache suexec doksit, de vszinuleg konnyeden atsiklottam ez felett. Majd holnap megnezem ujra. Mara eleg volt szopasnak, hogy arra is nehezen jottem ra, hol van egyaltalan suexec az apache 1-ben. Mert arrol sem talaltam doksit, csak vmelyik weblapon megemlitve.

Aha, mar ertem.
suexec -V:
-D HTTPD_USER="www-data"

Szoval ez okozza a galiat. Most mar csak ra kellene jonnom, hogyan allitsam at webadminra.

UPDATE:
1. httpd.conf-ban az user webadmin helyett www-data lesz
2. sajat suexec forditas.

Most a masodikkal kiserletezek. Miert nincs ennek runtime opcioja? Config file-ja? Vagy ilyesmi?

Ez nagyon durva...
Forditas:
./configure --enable-suexec --suexec-caller=webadmin --suexec-logfile=/var/log/apache/suexec.log --suexec-docroot=/usr/lib/cgi-bin

cp src/support/suexec /usr/lib/apache/suexec
Kapott egy suid jogot.

Ez nem volt eleg:
/usr/lib/cgi-bin# ls -l
total 8356
-rwxr-xr-x 1 root root 545076 2008-12-03 10:28 awstats.pl
lrwxrwxrwx 1 root root 29 2009-03-06 18:50 php -> /etc/alternatives/php-cgi-bin
-rwxr-xr-x 1 root root 3047504 2008-05-16 17:59 php4
-rwxr-xr-x 1 xy.hu webadmin 4934124 2009-05-01 12:25 php5

Es a cgi-bin konyvtarnak is xy.hu:webadmin a joga....
Ez akkor azt jelenti:
1. mindenki, akit suexec-kel aakrok futtatni, kap egy sajat forditasu suexecet (elvegre a docroot csak configure eseten mondhato meg....)
2. kap egy sajat php5-ot, sajat konyvtarban

Ez nagyon kemeny....Valami egyszerubb megoldas kellene. (Legjobb lenne, ha az eredeti, debianos suexec raveheto lenne, hoyg ne www-data, hanem webadmin neveben fusson. De erre nem talalok megoldast)

Nos, koszi a segitseget. Tegnap megint volt idom foglalkozni vele, beturol beture vegigolvastam ezt . Ez volt amugyis a kiindulopontom, de most atneztem es rajottem, hogy sekelyes angoltudasommal mi felett siklotttam el:
18. Is the target user/group the same as the program's user/group?
Is the user the owner of the file?

Tehat abban a formaban, ahoyg en szeretnem, nem lehet megoldani. Vegulis ez lett:
apache 1.3 forras letolt, ujrafordit az alabbi parameterekkel:
./configure --enable-suexec --suexec-caller=webadmin --suexec-docroot=/hosting --suexec-logfile=/var/log/apache/suexec.log

Merthogy a /hosting alatt van az osszes hostolt site. Aztan make es a src/support/suexec bemasolasa az /usr/lib/apache ala, aztan kap egy SUID jogot.
Innen erdekes: _minden_ user, aki PHP5-ot akar, kap a sajat /hosting/$USER/bin konyvtarba egy php5 binarist. A tulajok:
/hosting webadmin:webadmin
/hosting/$USER webadmin/webadmin
/hosting/$USER/bin user:webadmin
/hosting/$USER/bin/php5 user:webadmin

Sajnos, a suexec csak ugy hajtja vegre a $parancsot, ha a $parancs es a tartalmazo dir annak a tulajdonaban van, akinek a neveben vegre akarom hajtani.

Aztan, a
/hosting/$USER/etc/httpd.conf:

User $USER
Group webadmin
AddHandler php5-script .php
ScriptAlias /php5 /hosting/$USER/bin/php5
Action php5-script "/php5"
DocumentRoot /hosting/$USER/home/stuff/php5
ServerName php5.$USER.hu

Ezzel elertem, hogy suexec hajtja vegre a php5-ot a sajat userrel es nem a webadminnal, ahogy az osszes tobbi itt hostolt domainhez is hozzaferne....annyi csak, hogy mindenki kap egy sajat php5-ot (meg a /hosting exec opcioval lesz mountolva)