Ubuntuでは、SuexecのDocrootが/var/wwwに設定されている。 このままだと、/home/foo/public_htmlではsuexecが使用できないので,suexecの設定を変更してビルドし直した。 Rebuilding suexec with Different Options on Ubuntu ≪ planetOzhを参考にした。
suexecの設定を確認
ubuntuのデフォルトでは、以下のように表示されるはず。
$ sudo ./suexec -V -D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="www-data" -D AP_LOG_EXEC="/var/log/apache2/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX="public_html"
DOC_ROOT="/home/"に変更する
suexecはapache2.2-commonに含まれているため、apache2.2-commonをビルドする準備をする
$ cd /usr/src $ apt-get build-dep apache2.2-common $ apt-get source apache2.2-common $ cd apache2-2.2.3/
AP2_COMMON_CONFARGSのDOC_ROOTを/homeに変更する
$ vi debian/rules --with-suexec-docroot=/home
dchを使ってchange logを書きかえる(dchはdevscriptパッケージに含まれている)
$ dch -i
あとはbuildするだけ
$ dpkg-buildpackage
/usr/srcに出来あがったapache2.2-common.debからインストールしてもよいが、面倒なのでパッケージ化される前のバイナリをコピーする
$ sudo cp debian/apache2.2-common/usr/lib/apache2/suexec /usr/lib/apache/suexec
変更されているか確認
$ sudo ./suexec -V -D AP_DOC_ROOT="/home" -D AP_GID_MIN=100 -D AP_HTTPD_USER="www-data" -D AP_LOG_EXEC="/var/log/apache2/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=100 -D AP_USERDIR_SUFFIX="public_html"