よもやディレクトリ権限を与え過ぎててハマるとは.

いつもはほとんど使われることのないサーバちゃん.

試しにCGIを動かしてみようと思ってタイトル通り,ハマったのでメモ.

設定

/etc/httpd/conf/httpd.conf を編集

AddHandler cgi-script .cgi

コメントアウトされてるのではずして以下を追加.


Options ExecCGI

で,~/public_html/cgi_bin にサンプルを入れて実行を試みるも500エラー発生.
実行権限が与えられていることを確かめるが問題ない(と思ったんだけどまぁ問題あったんだよね).

解決

エラーログ(/var/log/httpd/error_log)を一応チェック.
"Premature end of script headers" と言われてる.言ってる意味がよくわからない.
調べても実行権限与えろだの,イマイチ当たり前の情報しか得られない.


とりあえずログを一個ずつチェック.
/var/log/httpd/suexec.logで

directory is writable by others

言われてるのを発見.


cgi-binの権限が775になってるのを発見.

755に変更したら動いたよ.
実行権限ついてるかはチェックするけど,書きこみ権限ついてないかまでチェックしませんよ...orz


という話.


調べたら,
Premature end of script headers - 帰ってきただらだら日記--
とまったく同じでした.


どうやら,

Red HatApache はデフォルトで SuExec が有効で、その要件としてディレクトリが group writable でないということらしい。

ということらしい.


なんていったって,うちのサーバはFedoraCore 5ですからね.
いい加減新しくしようぜという話が大分前からあるけど,
就活とか終わるまでは無理かな.