- æ¥æï¼ 2007/12/06 09:41
- ååï¼ ryou
- ①不明点・障害内容:サブドメインでアクセスするとSuExecが無効になり、実行ユーザーがapacheになる
②ログの有無 :Error 500 (有:その内容): ③Distribution :fedora core 4 Version: ④Service Name :Apache/2.0.54 Version: ⑤ネットワーク構成:
当方、fedora core4を使っていまして、 apacheは、fedora core に最初から入っていたものをつかっております。(rpmでインストールされたものだとおもいます)
それで、ip一つで、ネーム判定のバーチャルサーバを使用しているのですが、
http://bbb.com/~aaa/abc.cgi アドレスで実行した場合、SuExecで実行されて、ユーザーaaaで正常にcgiが実行できるのですが、
http://aaa.bbb.com/abc.cgi アドレスで実行した場合、SuExecが無効になり、ユーザーがapacheで、実行されるのです。
上記を回避するために、http.confに、 SuexecUserGroupをいれた、 下記の設定をしまして、再度試したところ、
<VirtualHost *:80> ServerName aaa.bbb.com SuexecUserGroup aaa webuser DocumentRoot /home/aaa/public_html </VirtualHost>
http://bbb.com/~aaa/abc.cgi アドレスで実行した場合、今までどおり、SuExecで実行されて、、ユーザーaaaで正常にcgiが実行されたのですが、
http://aaa.bbb.com/abc.cgi アドレスで実行した場合、500エラーがでてしまい、実行できませんでした。
よーするに、サブドメイン形式にすると、SuExecが無効になってしまい、 それを回避するために、SuexecUserGroup aaa webuser という設定をいれると500エラーになってしまうのです。
ネットでも、いろいろ調べたのですが、
ーーーーーーーーーーーーーーーーーーーーーーーー調べた結果ーーーーーーーーーーーーーーーーーーーーーーー VirtualHostディレクティブの中で SuexecUserGroup uid gid を設定するとSUEXECが有効になります。 ①このときに気をつけるのは、Apacheをインストールした後にAppacheのUserとGroupは変更しないこと。 ②SuexecUserGroupで指定するuidとgid(idじゃなく名称でも良い)は--with-suexec-uidminと--with-suexec-gidminの値を超えていること。 ③そして実際にCGI等を配置するディレクトリは--with-suexec-docrootで指定したディレクトリ内にあることです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
とかかいてありました。 ①AppacheのUserとGroupは変更は、変更していません。 ②SuexecUserGroupで指定するuidとgidは、501と1000です。(--with-suexec-uidminと--with-suexec-gidminの値を超えているかはわかりません。ソースからインストールしなかったもので--with-suexec-uidminと--with-suexec-gidminの値はわかりません。) ③CGI等を配置するディレクトリは--with-suexec-docrootで指定したディレクトリ内にあるかはよくわからないです。 (ソースからインストールしなかったもので、--with-suexec-docrootで指定したディレクトリとかは、よくわからないです。)
③がいまいちわからなかったので、ネットでしらべてみました。 2chの記事が以下です。 ーーーーーーーーーーーーーーーーーーーーーーーー調べた結果ーーーーーーーーーーーーーーーーーーーーーーー
VHOSTの設定でSuexecUserGroupをそのユーザーに設定しても ユーザーのホームディレクトリが/home/userだとsuEXECのドキュメントルート/var/wwwから外れてしまうのでCGIがうまく実行できません
上記の回答:mount -bind /home /var/www/ にすれば、OK
上記の回答の結果:質問したひとは、ちゃんと解決したみたいです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
上記の記事をみつけて、当方も、以下のようにやってみたのですが、
mount -bind /home /var/www/home
うまくいきませんでした。
そもそも、今まで、/home/userは、ちゃんとsuEXECになっていたので、上記のようにやっても、うまくいかないのは、あたりまえですね。
http://aaa.bbb.com/abc.cgi という形式にすると、suEXECが、無効になり、 http://bbb.com/~aaa/ という形式にすると、suEXECが、有効にになるみたいです。
サブドメイン http://aaa.bbb.com/abc.cgi でアクセスした時に、suEXECを有効にしてしたいのですが、どうしても、できません。 これをどうやって解決すればいいのか、わからないので、すいませんが、ぜひとも、ご教授おねがいいたします。
※ html表示だと、サブドメインともども、正常に表示されます。 http://aaa.bbb.com/aiueo.html http://bbb.com/~aaa/aiueo.html どちらとも、同じように正常に表示されます。
※ #!/usr/bin/perl print "Content-type: text/html\n\n"; print `whoami`; という、スクリプトを使って、実行ユーザーをしらべました。
※追加参照
当方、/home/akasatana/public_html/ というところをルートディレクトリにして、 http://bbb.com/ で、アクセスすれば、/home/akasatana/public_html/を参照できるというような、設定にしてあったのですが、 http://bbb.com/ で、アクセスしても、やはり、SuExecが無効になり、実行ユーザーがapacheになります。
|