apache a virtualni web servery

Petr Lampa lampa at fee.vutbr.cz
Wed Mar 26 19:42:42 CET 1997


> [...]
>
> > cely server bezi jako jeden proces a vsechno, co dela
> > jsou thready ....
>
> [...]
>
> chtel bych se zeptat na jednu vec. Pokud pouzvam klasicky forkujici
> httpd
> je kazdy novy proces oddelen od puvodniho core httpd tj. Maji stejny
> kodovy segment,ale kazdy ma svuj datovy segment (v tom lepsim pripade).
> Pokud bezi vicevlaknovy httpd - nejsou jednotliva vlakna od sebe az tak
> strikne
> oddelena.
>
> Naprvni pohled je vlaknovy asi vyhodnejsi. Vzdy bude mit mensi reziji
> nez
> forkujici httpd a bude tedy teoreticky rychlejsi.

Pouze nekdy, zavisi to na implementaci systemu a podpory vlaken.
Pokud jsou vlakna implementovana pouze na urovni knihovny, muze to
byt klidne i pomalejsi.

>
> Zajimalo by me jak je u  WWW serveru, ktere jsou "vlaknoveho" typu (
> rekneme treba Zeus httpd) resen "pad" jednoho vlakna. Napr. jedno vlakno
> vyvola naprosto fatalni situaci ( rekneme deleni nulou nebo vyvola
> poruseni
> ochrany pameti ). Co se stane s ostatnimi vlakny ? (a najakem OS ?)

Vetsinou to musi spadnout. Tj. lze samozrejme osetrit vsechny
signaly, ale poruseni ochrany pameti vetsinou znamena, ze je
porusen obsah adresoveho prostoru, ktery sdili vsechna vlakna v
jednom procesu. A pokracovat dale v cinnosti je pak pouze hazardem
se zdravim systemu a WWW stranek.

>
>
> BTW: Tusim,ze primo v dokumentaci Apache jsem cetl,ze ucelem  neni
> udelat za kazdou cenu
> nejrychlejsi ( nejvykonejsi ) WWW server, ale primarni je stabilita a
> beypecnost celeho WWW serveru. To me dovedlo k temto otazkam. Presne v
> tomhle duchu mluvi take autori FastCGI,ktere
> vytvari jakysi (vykon/stabilita) kompromis mezi obema resenimi.viz.
> http://www.fastcgi.com
>
>
> Ted me napadlo jak by se na  "vlaknovem httpd" resil napr. SetSUID
> modul, ktery ma Apache.
> Core server pokud bezi  na portu <1024 musi mi prava superuzivatele  Sam
> ovsem
> temer nic nedela,ale pouze prijima zadosti o spojeni a vytvari potomky,
> kteri jiz muzou byt prakticky bez prav (nobody,nouser,nogroup atd.atd.
> jak kde je zvykem :-),ale SetSUIDmodul
> umoznuje neco jako jsou "uzivatelske" skripty. tj.ze  potomek (
> odforkovany httpd ) ziska
> efektivni  prava vlastnika souboru ( tj. cgi skriptu *.phtml atd. ). Jde
> to vubec bezpecne vyresit ?

Vetsina slusnejsich Unixu ma krome setuid(), ktere se vzda puvodnich
prav navzdy, take seteuid(), ktere nastavi efektivniho majitele tak,
ze je mozno se vratit zpet k puvodnimu (POSIX saved-set-uid). Takze
se da prepinat mezi root a nobody, ale samozrejme pred spustenim
externiho programu je treba provest setuid().  Jinak to lze samozrejme
resit externim setuid programkem typu suexec.

							Petr Lampa

--
Department of Computer Science and Engineering  E-mail: lampa at fee.vutbr.cz
Faculty of El. Engineering and Comp. Science	Phone: (+420 5) 7275/225,111
Technical University of Brno			Fax:  (+420 5) 41211141
Bozetechova 2, 612 66 Brno, Czech Republic



More information about the net mailing list