PNG IHDR ; IDATxܻn0K )(pA7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5 bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô!x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%tMז -lG6mrz2s%9s@-k9=)kB5\+͂ZsٲRn~GRCwIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL /F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ R IENDB`
Apache HTTP Server Version 2.4
suEXEC ġ CGI SSI α ID ƴ ٸ ID ϵ Ѵ. CGI SSI α ϸ ڿ ڷ Ѵ.
ϸ ڰ CGI SSI α ϰ Ҷ ִ ִ. suEXEC ϰ Ǹ ǻͿ ο ִ. setuid root α ̷ α ϴٸ suEXEC ʱ ٶ.
ϱ 켱 ġ .
setuid setgid н ü Ѵٰ Ѵ. ɾ 鵵 Ѵ. suEXEC ϴ ٸ ÷ ϴٸ ٸ ִ.
ι°, ǻ ⺻ ͼϴٰ Ѵ. setuid/setgid ɰ ̵ ý۰ ȿ ġ ذ Եȴ.
°, suEXEC ڵ Ѵٰ Ѵ. ڿ Ÿ͵ suEXEC õ ڵ带 ɽ ϰ ˻ߴ. ڵ带 ϰ ϰ Ȯ ϱ Ǹ . ڵ带 ϸ ġ ο ִ. αֿ ſ ˰ ڵ带 캸 ġ ۾ ǻ簡 ٸ suEXEC ڵ带 ʱ Ѵ.
° , ġ suEXEC ġ ⺻ġ ʱ ߴ. ᱹ ڰ Ǹ ← suEXEC ؾ Ѵ. suEXEC ڴ Ϲ ġ suEXEC ġ ִ. suEXEC ϴ ý å ڴ ְ 캸 ؾ Ѵ. ̷ suEXEC Ҹŭ ְ ȣ suEXEC ϵ ġ ϱ ̴.
ϱ ϴ°? ? . !
suEXEC ϰ ġϱ 츮 ȸ Ѵ. ̸ Ȯ suEXEC ȿ Ͼ ý ؾ ִ.
suEXEC ġ θ setuid "wrapper" α Ѵ. wrapper ڰ ּ ٸ userid ϵ CGI SSI α HTTP û Ҹ. ̷ û ġ suEXEC wrapper α α ڿ ID Ѵ.
wrapper и Ѵ. ϳ ϸ α з ϵǰ Ѵ. Ѵ:
wrapper ϴ ڰ ý ȮѴ.
wrapper ƱԸƮ ־߸ ȴ. ġ ȴ. wrapper ƱԸƮ ϸ ŷǾų ġ suEXEC ִ ̴.
ڰ wrapper ϵ Ǿ? (ġ ) α ִ.
CGI SSI α '/' ϰų
'..' °? ̵ . CGI/SSI
α suEXEC root (Ʒ
--with-suexec-docroot=DIR
)
־ Ѵ.
ڰ ϴ°?
ϴ°?
suEXEC root
CGI/SSI
α Ѵ.
ּ ID ڸ Ѵ. CGI/SSI α ִ userid ּġ ִ. "ýۿ" Ҷ ϴ.
suEXEC root
CGI/SSI
α Ѵ.
ּ ID ڸ Ѵ. CGI/SSI α ִ groupid ּġ ִ. "ýۿ" Ҷ ϴ.
ܰ迡 α setuid setgid ȣ Ͽ ڿ ȴ. , ٸ ڰ ش ʱȭȴ.
丮 ʴٸ . ̰ 丮 ٸ 丮 ̴.
Ϲ κ û ûϴ 丮 suEXEC root Ʒ ִ°? UserDir û ûϴ 丮 suEXEC userdir (suEXEC ɼ ) 丮 Ʒ ִ°?
丮 ٸ α ʴ´. ڸ 丮 ִ.
ʴٸ .
ڿ CGI/SSI α ϱ ʴ´.
츮 α ٽ UID/GID ϱ ʴ´.
ڰ ΰ?
suEXEC ( ) PATH , (̰͵ ) ȯ溯 Ͽ ŵ μ ȯ溯 .
⼭ suEXEC CGI/SSI α Ѵ.
̰ suEXEC wrapper ȸ ǥ ̴. ټ ϰ CGI/SSI 迡 ο , ο ΰ Ѵܰ辿 ɽ .
ִ suEXEC ִ "ٽ ѹ ϶" ϶.
ִ Ѵ.
suEXEC ɼ
--enable-suexec
--enable-suexec
ɼǿܿ
--with-suexec-xxxxx
ɼ ּ Ѱ
ʿϴ.--with-suexec-bin=PATH
suexec
̳ʸ δ Ȼ
ϵǾ Ѵ. ⺻ Ϸ ɼ
Ѵ.
--with-suexec-bin=/usr/sbin/suexec
--with-suexec-caller=UID
--with-suexec-userdir=DIR
--with-suexec-docroot=DIR
--datadir
"/htdocs" ̴.
"--datadir=/home/apache
"
ߴٸ suEXEC wrapper document root
"/home/apache/htdocs" 丮 Ѵ.--with-suexec-uidmin=UID
--with-suexec-gidmin=GID
--with-suexec-logfile=FILE
--logfiledir
) ġѴ.--with-suexec-safepath=PATH
suEXEC wrapper ϰ ġϱ
--enable-suexec
ɼ suEXEC ϰ
make
ɾ ϸ suexec
(ġ Բ) ڵ .
make install
ɾ
Ͽ ġ ִ. ̳ʸ suexec
--sbindir
ɼ 丮 ġȴ.
⺻ ġ "/usr/local/apache2/sbin/suexec"̴.
ġ root ʿ
϶. wrapper ID ϱؼ ڰ
root
̰ ϸ setuserid Ʈ
Ǿ Ѵ.
Ѽ
suEXEC wrapper ڽ ڰ ɼ
--with-suexec-caller
ùٸ
Ȯ , ˻ suEXEC ϴ ýȣ
Ȥ ̺귯 Լ ۵Ǿ ִ. ̸ ϸ
Ϲ ̹Ƿ ġ ϴ 츸
suEXEC ֵ Ͻý ؾ Ѵ.
, ϰ:
User www
Group webgroup
suexec
"/usr/local/apache2/sbin/suexec"
ġϿٸ, ؾ Ѵ:
chgrp webgroup /usr/local/apache2/bin/suexec
chmod 4750 /usr/local/apache2/bin/suexec
ġ ϴ 츸 suEXEC wrapper ִ.
ġ Ҷ --sbindir
ɼ
丮 suexec
(⺻
"/usr/local/apache2/sbin/suexec") ã´. ġ
suEXEC wrapper ߰ϸ α(error
log) Ѵ:
[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)
߿ ̷ ٸ ҿ wrapper α ã ߰ų, setuid root ġʾұ ̴.
ó suEXEC ϰ Ͱ ̹ ġ ̶, ġ ̰ ٽ ؾ Ѵ. HUP̳ USR1 ñ׳η ϴ δ ʴ.
suEXEC ȻϷ suexec
ġ ̰ ؾ Ѵ.
CGI α û SuexecUserGroup
þ
ȣƮ û Ͽų mod_userdir
û óϴ 쿡 suEXEC wrapper ȣѴ.
ȣƮ:
suEXEC wrapper
ϴ Ѱ VirtualHost
ǿ SuexecUserGroup
þ
ϴ ̴. þ ּ ID ٸ
ϸ CGI ڿ û <VirtualHost>
User Group ȴ.
þ <VirtualHost>
ּ
userid Ѵ.
丮:
mod_userdir
û óѴٸ suEXEC
wrapper ȣϿ, û 丮 شϴ
ID CGI α Ѵ. Ϸ
ID CGI ְ ũƮ
˻ ؾ Ѵ.
ɼ --with-suexec-userdir
϶.
suEXEC wrapper α ٷ
--with-suexec-logfile
ɼ Ͽ
. wrapper ùٷ ϰ ġߴٸ ߸Ǿ
αϿ error_log .