|
cd support [ENTER]と入力して下さい。
suexec.hファイルを編集し、以下のマクロをApacheインストレーションと一致するように変更して下さい。
support/suexec.hから
/*
* HTTPD_USER -- Apacheが普通に作動している時のユーザーネームと定義します。
* これは、このプログラムを実行することが許されたユーザー
* だけです。
*/
#define HTTPD_USER "www"
/*
* LOG_EXEC -- もし全てのsuEXEC処理のログと、検査や用途のデバッグの
* ために記録されたエラーログが欲しいなら、ファイル名を
* 定義します。
*/
#define LOG_EXEC "/usr/local/etc/httpd/logs/cgi.log"
/*
* DOC_ROOT -- ApacheのDocumentRoot セットを定義します。これはsuEXECの
* 作用に使われる(UserDirsは別として)階層に過ぎません。
*/
#define DOC_ROOT "/usr/local/etc/httpd/htdocs"
/*
* NNAME -- オペレーティングシステムの誰でもないアカウントの名前として、
* これを定義します。ほとんどのシステムは、デフォルト'nobody'だけを
* 必要とします。
*/
#define NNAME "nobody"
/* NGID -- オペレーティングシステムのどのグループでもないグループの*number*
* としてこれを定義します。ほとんどのシステムは-1か-2を持っています。
* 他に65000以上あります。
*/
#define NGID -1
cc suexec.c -o suexec [ENTER]と入力して下さい。これで実行可能な suexec wrapperを作れるでしょう。
src/httpd.hから
/* suEXEC wrapperへのパス */
#ifndef SUEXEC_BIN
#define SUEXEC_BIN "/usr/local/etc/httpd/sbin/suexec"
#endif
もしインストレーションが違うディレクトリのwrapperプログラムの場所が必要なら、src/httpd.hを編集し、Apacheサーバを再コンパイルして下さい。この処理に関する詳細はCompiling and Installing Apacheを参照して下さい。
wrapperが実行要求のためにユーザーidをセットするには、オーナーrootとしてインストールされ、ファイルモードでsetuserid実行ビットセットを持っていなければなりません。もしrootユーザーシェルを動かしていないのなら、今ユーザーシェルを動かし、以下のコマンドを実行して下さい。
chown root /usr/local/etc/httpd/sbin/suexec [ENTER]
chmod 4711 /usr/local/etc/httpd/sbin/suexec [ENTER]
あなたのシステムインストレーションと一致するようにsuEXEC wrapperへのパスを変えてください
kill -1 `cat httpd.pid`では不十分です。ウェブサーバのスタートアップで、Apacheがきちんと設定されたsuexec ラッパーを探していれば、コンソールに以下のメッセージが表示されます。
Configuring Apache for use with suexec wrapper.
もしサーバのスタートアップ時にこのメッセージが表示されなければ、サーバはおそらく予想された場所でwrapperプログラムを見つけていないか、実行可能なものがsetuid rootにインストールされていません。インストレーションをチェックして、再実行して下さい。
suEXECを実行するための一つの方法は、VirtualHost定義のUserとGroupの命令を経ることです。これらの命令がメインサーバのユーザーidとは違う値をセッティングすることにより、CGI資源に対する全ての要求が<VirtualHost>によって定義されたUserとGroupとして実行されます。もしたった一つか、又はどちらでもないこれらの命令が<VirtualHost>によって特定されていれば、メインサーバのユーザーidが仮定されます。
suEXECはまた、要求されたユーザーとしてCGIプログラムを実行するために使われます。これは実行を要求されたユーザーidの前に~記号を使うことにより実行される。この特徴が実行されるのに必要なことは、ユーザーにとってCGIが実行可能で、スクリプトが上記の精密なsecurity checksに合致していることです。
suexec.hで定義されたロケーションのログ情報を書き込みます。もし正確にコンフィギュアされ、インストールされたwrapperだと考えているなら、迷っている場所を見るためにサーバのこのログとエラーログを探して下さい。
このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。