プロが教えるわが家の防犯対策術!

【環境】
fedora7(さくら専用サーバー
Apache(2.2.8)
vsftpd(2.0.5-16.fc7)
suEXEC

cgiを700で動かしたいのですが、
全く動いてくれません。。。
500 Internal Server Error

エラーログを一部抜粋しました。
error.log
[Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] attempt to invoke directory as script: /home/test1/cgi-bin/test/
[Sat May 24 17:08:07 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico
[Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Directory index forbidden by Options directive: /home/test1/httpdocs/file/00/, referer: http://ドメイン/
[Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/log_note.cgi', referer: http://ドメイン/
[Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/log_note.cgi' failed, referer: http://ドメイン/
[Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] Premature end of script headers: log_note.cgi, referer: http://ドメイン/
[Sat May 24 17:08:11 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico
[Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] mod_mime_magic: can't read `/home/test1/cgi-bin/test/test.cgi', referer: http://ドメイン/
[Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] (13)Permission denied: exec of '/home/test1/cgi-bin/test/test.cgi' failed, referer: http://ドメイン/
[Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] Premature end of script headers: test.cgi, referer: http://ドメイン/
[Sat May 24 17:08:13 2008] [error] [client 121.1.216.98] File does not exist: /home/test1/httpdocs/favicon.ico

suexec.log
[2008-05-24 16:58:20]: too few arguments

suexec -V の結果
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

DOC_ROOTの変更方法も分からず、ずっとhomeでやってたので、
ミスだったのかな?と思い。
/var/以下にcgiを置いてchmodでtest.cgiの権限700にしてしてみましたが、500のエラーでした。

なぜかFFFTPのクライアントからは操作ファイル操作が出来ませんでした。

ユーザー名はapacheグループに属してるだけです。

バーチャルで運営の予定です。
perlのパスは
usr/bin/perl
test.cgiの先頭は
#!/usr/bin/perl
です。

suEXECは・・・
chmod 4711 /usr/sbin/suexec
でapache再起動後のログに、
[Sat May 24 17:31:04 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
が出ます。

/usr/sbin/httpd -l でチェックすると。
core.c
prefork.c
http_core.c
mod_so.c

の4点しかありません。
suexec: disabled; invalid wrapper /usr/sbin/suexec は出ません。

宜しくお願い致します。

A 回答 (1件)

ちょっと自信無しですが、、


httpd.confの
<VirtualHost *:80>
ServerAdmin webmaster@hoge.example.com
DocumentRoot /var/www/hogehoge/
ServerName hoge.example.com
SuexecUserGroup hogehoge hogegrp
ErrorLog logs/hogehoge-error_log
CustomLog logs/hogehoge-access_log common
</VirtualHost>

SuexecUserGroupって設定してますか?
http://httpd.apache.org/docs/2.2/ja/mod/mod_suex …

あと docrootを適当なところにしちゃうとエラーになり
suexec.logに
command not in docroot
になるんじゃないかと思います
http://www.aconus.com/~oyaji/bbs/past/0004/B0002 …

見当違いならゴメソです
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。

SuexecUserGroupの設定してありませんでした。

色々と問題御座いましたが、
ニアミスとか結構あったみたいで、解決出来ました

書く程でもないかもですが、一応書いておきます。

SuexecUserGroupの設定後、下記のようなエラーが出ました。

HTMLは644と604で表示出来ている状態でした。
docrootを違った所と混ぜてバーチャルしてましたので、
ごちゃごちゃしてたのを整理して、suEXECのdocに変更。

(error.log
[Tue May 27 10:01:44 2008] [error] [client 121.1.216.98] suexec policy violation: see suexec log for more details, referer: http://ドメイン/
[Tue May 27 10:05:13 2008] [notice] caught SIGTERM, shutting down
[Tue May 27 10:05:14 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue May 27 10:05:14 2008] [notice] Digest: generating secret for digest authentication ...
[Tue May 27 10:05:14 2008] [notice] Apache/2.2.8 (Unix) DAV/2 PHP/5.2.4 mod_python/3.3.1 Python/2.5 mod_ssl/2.2.8 OpenSSL/0.9.8b mod_perl/2.0.3 Perl/v5.8.8 configured -- resuming normal operations

と出たので、suEXECのログを確認。
[2008-05-27 10:01:43]: cannot run as forbidden gid (48/test.cgi)
[2008-05-27 10:01:44]: uid: (502/ユーザー名) gid: (48/48) cmd: log_note.cgi

suEXECの設定
[root@localhost sbin]# /usr/sbin/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"


なので、gid(グループ番号)48のグループに入ってたので、
users(100)に変更。
グループ変更したのですが、
uid: (502/ユーザー名) gid: (48/48) cmd: log_note.cgi
がまだ出ます。
gidが変更ならない?と思ってたら、
Apacheの方のグループも変更しないといけないの忘れていて、
変更後問題なく稼動しました。

umasikajiro様、
本当にありがとうございました。

お礼日時:2008/05/27 11:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!