Portál AbcLinuxu, 1. května 2025 17:34

není suexec jako mod_suexec

12.11.2008 12:28 | Přečteno: 2052× | i mistr tesař | Výběrový blog | poslední úprava: 12.11.2008 12:38

dneska ve škole jsme měli za úkol (mj.) nakonfigurovat Apachí modul userdir a spustit v uživatelských adresářích pár CGI skriptů. Jenže co čert nechtěl, cvičící trochu překombinovali požadavky a hned se začaly dít věci...

Nevinná písmenka

Zadání vypadalo přibližně takhle:

Vytvořte uživatele, zapněte mod_userdir, nastavte "public_html" adresář na "~/web", udělejte tam nějaký index, vytvořte tam podadresář "bin" a v něm cgi skript "whoami.cgi", který - pozorný čtenář si domyslí ;-) -.

Jednoduché, že? Ne tak docela. Když se místo výstupu ze skriptu začaly objevovat oblíbené Internal Server Errory, logy se začaly plnit na první pohled nesmsyslným:

[Wed Nov 12 10:05:11 2008] [error] [client 127.0.0.1] suexec policy violation: see suexec log for more details
[Wed Nov 12 10:05:11 2008] [error] [client 127.0.0.1] Premature end of script headers: whoami.cgi

a

[2008-11-12 10:05:11]: uid: (1003/franta) gid: (100/users) cmd: whoami.cgi
[2008-11-12 10:05:11]: cannot get docroot information (/home/franta)

nejjednodušší řešení

První, co mě napadlo, bylo vypnout suexec. Odstraňuji z konfiguráků zmínky o suexecu, konzultuji s cvičícím, ten tvrdí, že suexec je vypnutý: žádná zmínka o aktivaci v logu, žádná zmínka v /server-info.

Nesmyslné?

Smysl by to dávalo, kdyby byl suexec zapnutý. Ale on přece není (ano, server jsem restartoval, v logu jsou furt tytéž řádky)!

Dobře, problém nevypnutelného suexecu nechávám prozatím koňovi (ne nejsem na MFF, už :-) ) a řeším problém s "cannot get docroot..". Mezitím cvičící volá svého kolegu.

Než se kolega dostavil, trošku jsem poškádlil google a asi na třetí pokus zjistil, že suexec je ochotný na sebe bonznout intimnosti s přepínačem "-V".

y36aws sbin # ./suexec -V
 -D AP_DOC_ROOT="/var/www"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="apache"
 -D AP_LOG_EXEC="/var/log/apache2/suexec_log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_SUEXEC_UMASK=077
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="www"

Právě dorazil druhý kolega oba koukáme na poslední řádek :-). No jo, stane se, kolega slíbil, že nechá upravit zadání tak, že místo "web" tam bude "www" (což udělal třetí kolega v zápětí). Fajn, ale co s tím nevypnutým suexecem?

suexec a mod_suexec

Já i cvičící jsme žili v pohádkovém světě, kde suexec a mod_suexec jsou jedno a totéž. Jaké bylo mé překvapení, když jsem z dokumentace Apache 1.3, následně pak Apache 2.0 a po dlouhém a úmorném hledání i v dokumentaci Apache 2.2 zjistil, že "suEXEC se použije tehdy, najde-li Apache při spouštění odpovídající binárku (a je při kompilaci nastaven tak, aby ji použil)" - tedy žádné konfiguráky se nekonají! Ale vždyť v konfigurácích to bylo!..?

Cvičně hledám mod_suexec. Ha, rozdíl! mod_suexec už konfiguraci potřebuje (minimálně je třeba ho zapnout). Podle dokumentace jsem nakonec zjistil, že mod_suexec pouze rozšiřuje funkcionalitu suEXECu a to tok, že se mu dá vnutit pod jakým user/group má daný skript spustit.

Pravda, i cvičící z toho byli překvapeni. Těžko říct, jestli mile, či nemile. Ale vyslech jsem si pár nehezkých připomínek k dokumentaci Apache :-)

Definitivní řešení a poslední záhada

[Wed Nov 12 09:14:50 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)

Tento řádek z logů zmizel po odstranění všech zmínek o suexecu, resp. mod_suexecu z konfiguráků, dávajíc běžnému uživateli tušení, že suEXEC mechanizmus je skutečně vypnutý. Poslední zatím nevyřešenou záhadou tedy zůstává, proč tato hláška zmizela a suEXEC žije dál...

Samotné vypnutí suEXECu se, dle dokumentace, provádí na úrovni souborového systému a to příkazem rm, případně chmod (méně zdatní nechť použijí raději příkaz mv).

Poučení

co z toho plyne? Není suEXEC jako mod_suexec. Dávejte si na to pozor a nevěřte logům. Cesta k adresářům s webovým obsahem se musí suEXECu (resp. Apachi) říct už při kompilaci a následně se nedá změnit. Apache bude používat suEXEC, ikdyž se Vám to nebude líbít a jediná možnost, jako ho "přesvědčit", je hrubá síla.

Jen škoda, že jsme to řešili skoro celou hodinu já se nedostal k ostatním úkolům...

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

12.11.2008 21:12 rtfm
Rozbalit Rozbalit vše Re: není suexec jako mod_suexec
Odpovědět | Sbalit | Link | Blokovat | Admin
rtfm?

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.