Apache 1.2 $B$GF3F~$5$l$?(B suEXEC $B5!G=$K$h$j!"(B
Apache $B%f!<%6$O(B Web $B%5!<%P$r
$BE,@Z$K;HMQ$9$k$H!"$3$N5!G=$K$h$j%f!<%6$,8DJL$N(B CGI $B$d(B SSI
$B%W%m%0%i%`$r3+H/$7
$B$3$NJ8=q$N@hF,$KHt$VA0$K!"(BApache $B%0%k!<%W$H(B $B$3$NJ8=q$G$N2>Dj$rCN$C$F$*$/$Y$-$G$7$g$&!#(B
$BBh(B 1 $B$K!"$"$J$?$,(B setuid $B$H(B setgid $BA`:n$,2DG=$J(B UNIX $BM3Mh$N(B $B%*%Z%l!<%F%#%s%0%7%9%F%`$r;H$C$F$$$k$3$H$rA[Dj$7$F$$$^$9!#(B $B$3$l$O!"$9$Y$F$N%3%^%s%INc$K$"$F$O$^$j$^$9!#(B $B$=$NB>$N%W%i%C%H%[!<%`$G$O!"$b$7(B suEXEC $B$,%5%]!<%H$5$l$F$$$?$H(B $B$7$F$b@_Dj$O0[$J$k$+$b$7$l$^$;$s!#(B
$BBh(B 2 $B$K!";HMQCf$N%3%s%T%e!<%?$N%;%-%e%j%F%#$K4X$9$k4pK\E*$J35G0$H!"(B $B$=$l$i$N4IM}$K$D$$$F$"$J$?$,>\$7$$$3$H$rA[Dj$7$F$$$^$9!#(B $B$3$l$O!"(Bsetuid/setgid $BA`:n!"(B $B$"$J$?$N%7%9%F%`>e$G$N$=$NA`:n$K$h$kMM!9$J8z2L!"(B $B%;%-%e%j%F%#%l%Y%k$K$D$$$F$"$J$?$,M}2r$7$F$$$k$H$$$&$3$H$r4^$_$^$9!#(B
$BBh(B 3 $B$K!"(B$B2~B$$5$l$F$$$J$$(B suEXEC $B%3!<%I$N(B
$B;HMQ$rA[Dj$7$F$$$^$9!#(B
suEXEC $B$N%3!<%I$O!"B?$/$N%Y!<%?%F%9%?$@$1$G$J$/!"3+H/
$BBh(B 4 $B$K!"$3$l$,:G8e$G$9$,!"(BsuEXEC $B$r(B Apache $B$N%G%U%)%k%H(B
$B%$%s%9%H!<%k$K(B$B4^$a$J$$(B$B$3$H$,(B
Apache $B%0%k!<%W$G7hDj$5$l$F$$$^$9!#(B
$B$3$l$O!"(BsuEXEC $B$N@_Dj$K$O4IM}
$B$=$l$G$b?J$_$^$9$+(B? $B$h$m$7$$!#$G$O!"@h$X?J$_$^$7$g$&(B!
suEXEC $B$N@_Dj$H%$%s%9%H!<%k$r;O$a$kA0$K!"$^$:(B
$B
suEXEC $B$O(B Apache web $B%5!<%P$+$i(B
suEXEC $B$O!"(BApache web $B%5!<%P$+$i(B
$B8F$S=P$5$l$k(B setuid $B$5$l$?(B "wrapper" $B%W%m%0%i%`$,4pK\$H$J$C$F$$$^$9!#(B
$B@_7W$7$?(B CGI$B!"$^$?$O(B SSI $B%W%m%0%i%`$X$N(B HTTP $B%j%/%(%9%H$,(B
$B$"$k$H!"$3$N(B wrapper $B$,8F$S=P$5$l$^$9!#(B
$B$3$N$h$&$J%j%/%(%9%H$,$"$k$H!"(BApache $B$O$=$N%W%m%0%i%`$,(B
$B
$B$=$l$+$i!"(Bwrapper $B$O@.8y$^$?$O<:GT$r7hDj$9$k$?$a(B $B0J2<$N=hM}$r9T$J$$$^$9!#(B $B$3$l$i$N>uBV$N$&$A0l$D$G$b<:GT$7$?>l9g!"%W%m%0%i%`$O<:GT$r(B $B%m%0$K5-O?$7$F%(%i!<$G=*N;$7$^$9!#$=$&$G$J$1$l$P!"(B $B8e$N=hM}$,B3$1$i$l$^$9!#(B
wrapper $B$OE,@Z$J?t$N0z?t$,M?$($i$l$?>l9g$K
$B$3$l$O!"(Bwrapper $B$rZ$9$k$?$a$G$9!#(B
$B$3$N%f!<%6$O(B wrapper $B
$BBP>]$N%W%m%0%i%`$,(B '/' $B$+$i;O$^$k!"$^$?$O(B '..' $B$K$h$k;2>H$r9T$J$C$F$$$^$9$+(B? $B$3$l$i$O5v2D$5$l$^$;$s!#(B $BBP>]$N%W%m%0%i%`$O(B Apache $B$N(B web $B6u4VFb$K$J$1$l$P$J$j$^$;$s!#(B
$BBP>]$H$J$k%f!<%6L>$OB8:_$7$F$$$^$9$+(B?
$BBP>]$H$J$k%0%k!<%WL>$OB8:_$7$F$$$^$9$+(B?
$B:#$N$H$3$m!"(BsuEXEC $B$O(B 'root' $B$K$h$k(B CGI/SSI $B%W%m%0%i%`$N(B $B
$B:G>.%f!<%6(B ID $BHV9f$O@_Dj;~$K;XDj$5$l$^$9!#(B $B$3$l$O!"(BCGI/SSI $B%W%m%0%i%`.CM$G$9!#$3$l$O(B "system" $BMQ$N%"%+%&%s%H$r(B $BJD$a=P$9$N$KM-8z$G$9!#(B
$B:#$N$H$3$m!"(BsuEXEC $B$O(B 'root' $B%0%k!<%W$K$h$k(B CGI/SSI $B%W%m%0%i%`$N
$B:G>.%0%k!<%W(B ID $BHV9f$O@_Dj;~$K;XDj$5$l$^$9!#(B $B$3$l$O!"(BCGI/SSI $B%W%m%0%i%`.CM$G$9!#$3$l$O(B "system" $BMQ$N%0%k!<%W$r(B $BJD$a=P$9$N$KM-8z$G$9!#(B
$B$3$3$G!"(Bsetuid $B$H(B setgid $B$N5/F0$K$h$j%W%m%0%i%`$OBP>]$H$J$k(B $B%f!<%6$H%0%k!<%W$K$J$j$^$9!#%0%k!<%W%"%/%;%9%j%9%H$O!"(B $B%f!<%6$,B0$7$F$$$k$9$Y$F$N%0%k!<%W$G=i4|2=$5$l$^$9!#(B
$B%G%#%l%/%H%j$,B8:_$7$J$$$J$i!"$=$N%U%!%$%k$bB8:_$7$J$$(B $B$+$b$7$l$^$;$s!#(B
$B%j%/%(%9%H$,%5!<%PFb$N$b$N$G$"$l$P!"MW5a$5$l$?%G%#%l%/%H%j$,(B $B%5!<%P$N%I%-%e%a%s%H%k!<%HG[2<$K$"$j$^$9$+(B? $B%j%/%(%9%H$,(B UserDir $B$N$b$N$G$"$l$P!"MW5a$5$l$?%G%#%l%/%H%j$,(B $B%f!<%6$N%I%-%e%a%s%H%k!<%HG[2<$K$"$j$^$9$+(B?
$B%G%#%l%/%H%j$rB>%f!<%6$K3+J|$7$J$$$h$&$K$7$^$9!#(B $B=jM-%f!<%6$@$1$,$3$N%G%#%l%/%H%j$NFbMF$r2~JQ$G$-$k$h$&$K$7$^$9!#(B
$BB8:_$7$J$1$l$P
$B=jM-
UID/GID $B$r:FEYJQ99$7$F$N%W%m%0%i%`
$B%f!<%6$,$=$N%U%!%$%k$N=jM-
suEXEC $B$O!"0BA4$J4D6-JQ?t$N%j%9%H(B ($B$3$l$i$O@_Dj;~$K:n@.$5$l$^$9(B) $BFb$NJQ?t$H$7$F(B $BEO$5$l$k0BA4$J(B PATH $BJQ?t(B ($B@_Dj;~$K;XDj$5$l$^$9(B) $B$r(B $B@_Dj$9$k$3$H$G!"%W%m%;%9$N4D6-JQ?t$r%/%j%"$7$^$9!#(B
$B$3$3$G(B suEXEC $B$,=*N;$7!"BP>]$H$J$k%W%m%0%i%`$,3+;O$5$l$^$9!#(B
$B$3$3$^$G$,(B suEXEC $B$N(B wrapper $B$K$*$1$k%;%-%e%j%F%#%b%G%k$NI8=`E*$JF0:n$G$9!#(B
$B$b$&>/$787=E$K(B CGI/SSI $B@_7W$K$D$$$F$N?7$7$$@)8B$d5,Dj$r(B
$B
$B$3$N%;%-%e%j%F%#%b%G%k$rMQ$$$F(B $B%5!<%P@_Dj;~$K$I$N$h$&$K5v$9$3$H$r@)8B$9$k$+!"(B $B$^$?!"(BsuEXEC $B$rE,@Z$K@_Dj$9$k$H$I$N$h$&$J%;%-%e%j%F%#>e$N(B $B4m81$rHr$1$i$l$k$+$K4X$9$k$h$j>\$7$$>pJs$K$D$$$F$O!"(B "$B$H$+$2$KCm0U(B" (Beware the Jabberwock) $B$N>O$r;2>H$7$F$/$@$5$$!#(B
$B$3$3$+$i3Z$7$/$J$j$^$9!#(BApache 1.2 $B$"$k$$$O(B "src/Configure"
$B%9%/%j%W%H$G(B Apache 1.3 $B$r@_Dj$9$k$J$i!"(BsuEXEC $B%X%C%@%U%!%$%k$rJT=8$7$F(B
$B%P%$%J%j$rE,@Z$J>l=j$K
APACI $B$N(B suEXEC $B@_Dj%*%W%7%g%s(B
--enable-suexec
--suexec-caller=UID
--suexec-docroot=DIR
--datadir=/home/apache
"
$B$H$7$F@_Dj$9$k$H!"(B
suEXEC wrapper $B$K$H$C$F(B "/home/apache/htdocs" $B$,%I%-%e%a%s%H(B
$B%k!<%H$H$7$F;H$o$l$^$9!#(B
--suexec-logfile=FILE
--suexec-userdir=DIR
--suexec-uidmin=UID
--suexec-gidmin=GID
--suexec-safepath=PATH
suEXEC $B@_Dj$N3NG'(B
suEXEC wrapper $B$r%3%s%Q%$%k$7$F%$%s%9%H!<%k$9$kA0$K!"(B
$B@_DjFbMF$r(B --layout $B%*%W%7%g%s$G3NG'$G$-$^$9!#(B
$B=PNONc(B:
suEXEC setup: suexec binary: /usr/local/apache/sbin/suexec document root: /usr/local/apache/share/htdocs userdir suffix: public_html logfile: /usr/local/apache/var/log/suexec_log safe path: /usr/local/bin:/usr/bin:/bin caller ID: www minimum user ID: 100 minimum group ID: 100
suEXEC wrapper $B$N%3%s%Q%$%k$H%$%s%9%H!<%k(B
--enable-suexec $B%*%W%7%g%s$G(B suEXEC $B5!G=$rM-8z$K$9$k$H!"(B
"make" $B%3%^%s%I$r
$B%$%s%9%H!<%k;~$K$O(B root $B8"8B$,(B
$BI,MW$J$N$GCm0U$7$F$/$@$5$$!#(B
wrapper $B$,%f!<%6(B ID $B$r@_Dj$9$k$?$a$K!"(B
$B=jM-root
$B$G$N(B
$B%;%C%H%f!<%6(B ID $B%S%C%H$r$=$N%U%!%$%k$N%b!<%I$K(B
$B@_Dj$7$J$1$l$P$J$j$^$;$s!#(B
$B5/F0;~$K!"(BApache $B$O(B "sbin" $B%G%#%l%/%H%j$G(B "suexec" $B$rC5$7$^$9(B ($B%G%U%)%k%H$O(B "/usr/local/apache/sbin/suexec") $B!#(B $BE,@Z$K@_Dj$5$l$?(B suEXEC $B$,$_$D$+$k$H!"%(%i!<%m%0$K(B $B0J2<$N%a%C%;!<%8$,=PNO$5$l$^$9!#(B
[notice] suEXEC mechanism enabled (wrapper: /path/to/suexec)
$B%5!<%P5/F0;~$K$3$N%a%C%;!<%8$,=P$J$$>l9g!"BgDq$O%5!<%P$,(B
$BA[Dj$7$?>l=j$G(B wrapper $B%W%m%0%i%`$,8+$D$+$i$J$+$C$?$+!"(B
setuid root $B$H$7$F%$%s%9%H!<%k$5$l$F$$$J$$$+$G$9!#(B
suEXEC $B$N;EAH$_$r;HMQ$9$k$N$,=i$a$F$G!"(BApache $B$,4{$KF0:nCf(B
$B$G$"$l$P!"(BApache $B$r(B kill $B$7$F!":F5/F0$7$J$1$l$P$J$j$^$;$s!#(B
HUP $B%7%0%J%k$d(B USR1 $B%7%0%J%k$K$h$kC1=c$J:F5/F0$G$OIT==J,$G$9!#(B
suEXEC $B$rL58z$K$9$k>l9g$O!"(B"suexec" $B%U%!%$%k$r:o=|$7$F$+$i(B
Apache $B$r(B kill $B$7$F:F5/F0$7$^$9!#(B
$B2>A[%[%9%H(B:
suEXEC wrapper $B$N;H$$J}$H$7$F!"(B
$B2>A[%[%9%H(B$B@_Dj$G$N(B
User $B%G%#%l%/%F%#%V$H(B
Group $B%G%#%l%/%F%#%V(B
$B$rDL$7$?$b$N$,$"$j$^$9!#$3$l$i$N%G%#%l%/%F%#%V$r(B
$B%a%$%s%5!<%P$N%f!<%6(B ID $B$H0[$J$k$b$N$K$9$k$H!"(BCGI $B%j%=!<%9(B
$B$X$N$9$Y$F$N%j%/%(%9%H$O!"$=$N(B <VirtualHost>
$B$G(B
$B;XDj$5$l$?(B User $B$H(B Group $B$H$7$F
$B%f!<%6%G%#%l%/%H%j(B:
suEXEC wrapper $B$O!"%j%/%(%9%H@h$N%f!<%6$H$7$F(B CGI $B$r~
suEXEC wrapper $B$O!">e5-$G=R$Y$?(B --suexec-logfile $B%*%W%7%g%s$G(B $B;XDj$5$l$?%U%!%$%k$K%m%0>pJs$r5-O?$7$^$9!#(B wrapper $B$rE,@Z$K@_Dj!"%$%s%9%H!<%k$G$-$F$$$k$H;W$&>l9g!"(B $B$I$3$GLB$C$F$$$k$+8+$h$&$H$9$k$J$i$3$N%m%0$H%5!<%P$N(B $B%(%i!<%m%0$r8+$k$H$h$$$G$7$g$&!#(B
$BCm0U(B! $B$3$N>O$O40A4$G$O$"$j$^$;$s!#(B $B$3$N>O$N:G?72~D{HG$K$D$$$F$O!"(B Apache $B%0%k!<%W$N(B $B%*%s%i%$%s%I%-%e%a%s%H(B$BHG$r;2>H$7$F$/$@$5$$!#(B
$B%5!<%P$N@_Dj$K@)8B$r$b$&$1$k(B wrapper $B$K$D$$$F!"(B $B$$$/$D$+6=L#?<$$E@$,$"$j$^$9!#(BsuEXEC $B$K4X$9$k(B "$B%P%0(B" $B$r(B $BJs9p$9$kA0$K$3$l$i$r3NG'$7$F$/$@$5$$!#(B
$B%;%-%e%j%F%#$H8zN($NM}M3$+$i!"(BsuEXEC $B$NA4$F$N%j%/%(%9%H$O(B $B2>A[%[%9%H$X$N%j%/%(%9%H$K$*$1$k:G>e0L$N%I%-%e%a%s%H%k!<%HFb$+!"(B $B%f!<%6%G%#%l%/%H%j$X$N%j%/%(%9%H$K$*$1$k8D!9$N%f!<%6$N:G>e0L$N(B $B%I%-%e%a%s%H%k!<%HFb$K;D$i$J$1$l$P$J$j$^$;$s!#(B $BNc$($P!";M$D$N2>A[%[%9%H$r@_Dj$7$F$$$k>l9g!"(B $B2>A[%[%9%H$N(B suEXEC $B$KM-Mx$J$h$&$K!"(B $B%a%$%s$N(B Apache $B%I%-%e%a%s%H3,AX$N30B&$K(B $BA4$F$N2>A[%[%9%H$N%I%-%e%a%s%H%k!<%H$r9=C[$9$kI,MW$,$"$j$^$9!#(B ($BNc$O8eF|5-:\(B)
$B$3$l$rJQ99$9$k$N$O4m81$G$9!#$3$N;XDj$K4^$^$l$k3F%Q%9$,(B $B?.Mj$G$-$k%G%#%l%/%H%j$G$"$k$3$H$r3NG'$7$F$/$@$5$$!#(B $B@$3&$+$i$N%"%/%;%9$K$h$j!"C/$+$,%[%9%H>e$G%H%m%$$NLZGO(B $B$r
$B7+$jJV$7$^$9$,!"2?$r$d$m$&$H$7$F$$$k$+GD0.$;$:$K$3$l$r$d$k$H(B $BBg$-$JLdBj(B$B$r0z$-5/$3$7$+$M$^$;$s!#(B $B2DG=$J8B$jHr$1$F$/$@$5$$!#(B