まず、Apacheのバージョンとコンパイルオプションを確認
$ /usr/sbin/httpd -V
Server version: Apache/2.2.8 (Unix)
Server built: Mar 4 2008 21:37:02
Server's Module Magic Number: 20051115:11
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_FLOCK_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/usr"
-D SUEXEC_BIN="/usr/bin/suexec"
-D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/private/var/run/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"
都合、制約事項としては- httpd-2.2.8を使う
- 64bitでビルド
- コマンドは
/usr/bin/suexec
に配置する mod_suexec.so
も作る
configure
にコンパイルオプションを渡すやり方を忘れたので、環境変数で設定し、/etc/apache2/httpd.conf
とにらめっこしながら、パラメータを組み立てるとこんな感じ:$ CFLAGS='-arch ppc -arch ppc64 -arch i386 -arch x86_64' \
./configure --enable-mods-shared=all \
--enable-suexec \
--with-suexec-bin=/usr/bin/suexec \
--with-suexec-caller=_www \
--with-suexec-docroot=/Library/WebServer/Documents \
--with-suexec-uidmin=500 \
--with-suexec-gidmin=20 \
--with-suexec-logfile=/var/log/apache2/suexec_log \
--with-suexec-safepath=/opt/local/bin:/usr/local/bin:/usr/bin:/bin \
--with-suexec-userdir=Sites
あとはmake
して、suexec
とmod_suexec.so
をコピーするだけ:$ make
$ sudo cp modules/generators/.libs/mod_suexec.so /usr/libexec/apache2/
$ sudo cp support/suexec /usr/bin/
$ sudo chown root:_www /usr/bin/suexec
$ sudo chmod 4750 /usr/bin/suexec
ちょいちょいとhttpd.conf
を変更すると、とりあえず動かすだけならOKだった。gidmin
に設定する値が小さすぎるのが気持ち悪いところ。Leopardでユーザを作るとstaff
グループで作られるのだけど、これがgid=20なのが原因。元記事だと「最初のユーザが管理権限を持つ」云々のくだりがあって、実際の危険性はファイルシステムの多くでgid=80のadmin
グループにWriteパーミッションが与えられていることだと思う。最初に作ったユーザはもれなくadmin
グループに参加しているので、問題があるのでしょう。確かに外に出すサーバではできないよなぁ。ということで
staff
グループのgidを500くらいにする。- ファイルシステムの所有グループをgid=0の
wheel
にする。
sudo
打つ回数は多くなりそうだけど、きょうびのOSはそんなもんでしょう。代替なしの環境でやるのはおっかないので折をみて。
0 件のコメント:
コメントを投稿