ExecCGIの問題
従来のTurbolinuxでは、ユーザーディレクトリの該当ディレクトリ内でExecCGIを有効にするのは至って簡単でしたが、新しいTurbolinux 10 Serverでは今までの設定を施しても、ドキュメントルート又はサブドメイン内でしかExecCGIが有効になりません。現在色々な設定を試しておりますが、一向にうまく行く兆しもなくほとほと困っております。一体何が原因なのやら…(^_^;)
CGI実行の現状
2005/10/15、会社のサーバにTurbolinux 10 Serverを導入しました。サーバを実際にネット公開した場合、以下のような現象が起きています。
(1)「…/~ユーザー名/cgi-bin」ディレクトリ以下ではCGIがエラーになる。
(2)サブドメインで指定されている場合は、ユーザーディレクトリ内でもCGIが実行される。ただし、URLに「~ユーザー名」部分はない。
会社の場合は、本家サイトとバーチャルドメイン・サイトの二つだけなので、今の所CGIは問題なく稼動しています。
SELinuxか?
SELinuxに関してはデフォルトの状態では無効になっているはずなのですが、この点に関してはネットで調査しても未だはっきりとした解答が得られていません。httpd自体の問題であることは確かだと思うのですが、設定ファイルhttpd.confの内容を検証してもなかなかそれらしい箇所が見つかりません。以下に現状での問題点を列挙します。
(1)ユーザーディレクトリ内のcgi-binデイレクトリ内全てでExecCGIを許可する設定をしているにも関わらず、ドキュメントルート又はサブドメイン内でしかこれが有効にならない。
(2)ユーザーのアクセス権の問題かとも思われるが、SELinuxはデフォルトでは有効にはしていない。
suEXECの罠
以上の不可解な現象が起きている事から、結局httpdのエラーログを調査することに…。すると、何と!デフォルトでsuEXECが稼動しているではありませんか!?ユーザーディレクトリにアクセスしようとすると、/usr/sbin/suexecが呼び出されているではありませんか!suEXECだなんて、そんな厳密なユーザー権限の管理をするつもりはないのに…トホホ(+_+)
てな訳で、/usr/sbin/suexecを切ってやれば、ユーザーディレクトリ下でも以前のようにすんなりとCGIが稼動できました。ちゃん、ちゃん(^_^;)