パソコン鳥のブログ

アクセスカウンタ

zoom RSS SELinux が有効だと cgi の実行で Internal Server Error になった

<<   作成日時 : 2014/04/28 23:31   >>

トラックバック 0 / コメント 0

とあるテストサーバ上で、apache で cgi を動作させようとしましたが、ブラウザからアクセスすると Internal Server Error になり、どうやっても動作出来なくなっていました。

/var/log/httpd/error_log には下記のような出力がされていますが、さっぱり原因がわかりませんでした。

(13)Permission denied: exec of '/usr/local/test/cgi-bin/test.cgi' failed
Premature end of script headers: xxxxx.cgi


ところが、下記情報を見つけて問題解決できました。

EZ-NET: パーミッションを正しく設定しても CGI の実行に失敗する場合 (CentOS 5.4)


apache のデフォルトの cgiディレクトリ以外の場所に cgi を置くと、いくら apache の設定を正しくしても、SELinux が有効になっているとエラーとなるようです。

getenforce コマンドを実行して、下記のように Enforcing と表示されたら、SELinux が有効になっています。

$ getenforce
Enforcing


試しに下記コマンドで一時的に SELinux を無効にすると、Internal Server Error にならずに正常に cgi が実行できました。

setenforce 0


さて、SELinux が有効な場合は、SELinux の設定を行う必要がありますが、パソコン鳥はこれまで、SELinux を無効にしていました。
今回も SELinux を無効にする為に、下記を設定しました。

/etc/sysconfig/selinux

SELINUX=disabled


ここで間違えて SELINUXTYPE=disabled としないように注意して下さい。
下記記事のように カーネルパニックで起動しなくなってしまいます。

SELinuxを無効化したらカーネルパニックで起動しなくなった−凡ミスだったけれど− パソコン鳥のブログ/ウェブリブログ


これまでパソコン鳥は SELinux を無効にしていたのですが、今回、テストサーバでその無効化を忘れ、 Internal Server Error にかなり悩まされてしまいました。


ただし、今後は SELinux を無効化せずに有効にしてサーバを運用できるようにする必要があると思います。



参考


EZ-NET: パーミッションを正しく設定しても CGI の実行に失敗する場合 (CentOS 5.4)
SELinuxを無効化する | Smart
12 Tips


テーマ

関連テーマ 一覧


月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
SELinux が有効だと cgi の実行で Internal Server Error になった パソコン鳥のブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる