Hello Guest    ログイン
top > Linux > Apache > suEXECのドキュメントルートを変更する

suEXECのドキュメントルートを変更する

カテゴリー: Apache| 公開: 2009/7/20 | コメント(0)

Ubuntu8.04のApacheは、/var/www 以下でないとsuEXECが動かない。

# /usr/lib/apache2/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"


apache2-suexec-customパッケージがあれば、ドキュメントルートを簡単に変更できるが、Ubuntu8.04にはないので以下の方法を試す。

apache2.2-commonのビルド

suexecはapache2.2-commonパッケージに含まれている。

# dpkg -S /usr/lib/apache2/suexec
apache2.2-common: /usr/lib/apache2/suexec

ビルドの準備。

$ sudo apt-get build-dep apache2.2-common
$ apt-get source apache2.2-common
$ cd apache2-2.2.8/

fakerootがないと、ビルドでエラーが出るのでインストールする。

$ sudo apt-get install fakeroot

suexec-docrootを変更する。ここでは/homeとした。

$ vi debian/rules

              --with-suexec-docroot=/home \

ビルドする。

$ dpkg-buildpackage

できたパッケージをインストールする。今回はファイルだけコピーすることにする。

$ sudo cp debian/apache2.2-common/usr/lib/apache2/suexec /usr/lib/apache2/

確認

# /usr/lib/apache2/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"

バージョンアップ時に更新されないようにaptでholdする。

# echo apache2.2-common hold | dpkg --set-selections

「--bind」オプションをつけてmount

「--bind 」オプションをつけて/homeを/var/www/homeにマウントする。

# mkdir /var/www/home
# mount --bind /home /var/www/home

apacheのDocumentRootを変更する。

# vi /etc/apache2/sites-available/default

<Directory /var/www/home/user/public_html>

    DocumentRoot /var/www/home/user/public_html

再起動時にmountされるようにfstabに記入する。

# vi /etc/fstab

/home /var/www/home         none    bind            0       0

バイナリエディタでsuexecを修正

バイナリエディタでsuexecのバイナリの値を変更する。

suexecをコピーする。

# cd /usr/lib/apache2/
# cp -p suexec suexec.test

バイナリエディタで「/var/www」を「/home...(nullを3つ)」に修正。vimのバイナリモードを使った。

# vi -b suexec.test

修正前

00019a0: 69 64 20 75 69 64 3a 20 28 25 6c 64 29 0a 00 2d  id uid: (%ld)..-
00019b0: 56 00 77 77 77 2d 64 61 74 61 00 2f 76 61 72 2f  V.www-data./var/
00019c0: 77 77 77 00 20 2d 44 20 41 50 5f 44 4f 43 5f 52  www. -D AP_DOC_R
00019d0: 4f 4f 54 3d 22 25 73 22 0a 00 20 2d 44 20 41 50  OOT="%s".. -D AP

修正後

00019a0: 69 64 20 75 69 64 3a 20 28 25 6c 64 29 0a 00 2d  id uid: (%ld)..-
00019b0: 56 00 77 77 77 2d 64 61 74 61 00 2f 68 6f 6d 65  V.www-data./home
00019c0: 00 00 00 00 20 2d 44 20 41 50 5f 44 4f 43 5f 52  .... -D AP_DOC_R
00019d0: 4f 4f 54 3d 22 25 73 22 0a 00 20 2d 44 20 41 50  OOT="%s".. -D AP

確認する。

# ./suexec.test -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"

修正したsuexecと入れ替える。

# mv suexec suexec.orig
# mv suexec.test suexec

トラックバックURL

コメント送信

メールアドレスが公開されたり他で使用されたりすることはありません。