VineLinuxのapache2(Apache2.0)でsuexecを有効にする。
Vineのバイナリパッケージでは、enable-suexecとしてmakeされているもののデフォルトでは有効になっていない。
参考URL


まずはsuexecの設定を確認
[shell highlight_lines=”2″ gutter=”false”]
# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT=”/var/www”
-D AP_GID_MIN=500
-D AP_HTTPD_USER=”apache”
-D AP_LOG_EXEC=”/var/lib/log/apache2/suexec.log”
-D AP_SAFE_PATH=”/usr/local/bin:/usr/bin:/bin”
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX=”public_html”
[/shell]
suexec wrapperのパーミッションを変更する。
[shell highlight_lines=”4,9″ gutter=”false”]
# ls -l /usr/lib/apache2/
drwxr-xr-x 2 root root 4096 Aug 28 22:44 build/
drwxr-xr-x 2 root root 4096 Aug 28 22:44 modules/
-rwx–x–x 1 root apache 43936 Jan 8 08:04 suexec*
# chmod 4750 /usr/lib/apache2/suexec
# ls -l /usr/lib/apache2/
drwxr-xr-x 2 root root 4096 Aug 28 22:44 build/
drwxr-xr-x 2 root root 4096 Aug 28 22:44 modules/
-rws–x— 1 root apache 43936 Jan 8 08:04 suexec*
[/shell]

httpd.confでmod_suexecを読み込むように編集
[text]LoadModule suexec_module modules/mod_suexec.so[/text]

apache2を再起動
[shell gutter=”false”]# /etc/init.d/apache2 restart[/shell]

apache2のエラーログに
[text] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)[/text]
と出ていればsuexecが有効になっている。


suexecのrebuild

Vineのバイナリパッケージだとsuexecが有効になるのは/var/www/以下のみ。
別なディレクトリでVirtualDomainでサイト構築していたりする場合はsuexecが使えないのでsuexecだけmakeしなおして差し替えることにする。
apt-getでapache2のソースをダウンロード
[shell]# apt-get source apache2[/shell]

/tmpあたりにソースを展開。
[shell gutter=”false”]
# cd /tmp
# tar zxvf /usr/src/vine/SOURCES/httpd-2.0.55.tar.bz2
# cd httpd-2.0.55
[/shell]

今回はsuexec wrapperが欲しいだけなので細かいPatchなどは無視。
suexecの各種設定を織り込んでmake
[shell gutter=”false” highlight_lines=”3″]
# ./configure –enable-suexec \
–with-suexec-caller=apache \
–with-suexec-docroot=/home \
–with-suexec-userdir=public_html \
–with-suexec-uidmin=500 \
–with-suexec-gidmin=500 \
–with-suexec-bin=/usr/lib/apache2/suexec \
–with-suexec-logfile=/var/log/apache2/suexec.log
# make
[/shell]

各スイッチの意味についてはsuEXEC サポートを参照のこと。
出来上がったsuexec wrapperをデフォルトのものと入れ替える。
所有者とパーミッションに注意

[shell gutter=”false”]
# mv /usr/lib/apache2/suexec /usr/lib/apache2/suexec.OLD
# cp ./support/suexec /usr/lib/apache2/
# chown root.apache /usr/lib/apache2/suexec
# chmod 4750 /usr/lib/apache2/suexec
[/shell]

そしてapache2を再起動すれば完了
きちんと動作しているかどうかは↑のエラーログと 以下のCGIで確認できる。

[perl]
#!/usr/bin/perl
# suexec test script
print “Content-type:text/html\n\n”;
print “<H1>”;
print `whoami`;
print “</h1>”;
[/perl]
これをtest.cgiとか名前を付けてサイト上に置いてアクセスし自分のユーザー名が表示されれば正常にsuexecされている。



関連しそうなentry