DocumentRoot環境のCGI動作確認。要するに25日の設定だけでは足りなかったという事だ。まずviでCGIを開いてビックリ。そういえばこれも漢字を使っているので nkf でUTF-8に変換。こんな感じでまとめて変換してしまう。
$ for f in *.cgi *.pl;do fn="~apache/cgi-bin/pngcnt/$f"; nkf -Ew $f > $fn; touch --refer=$f $fn; chmod --refer=$f $fn;done実はCGIがprintするContent-Typeも"EUC-JP"から"UTF-8"に直さにゃならんのでviで置換。もちろん、現実には最後の最後でわかった事だが、未来ののび太君が二度手間を踏まなくていいようにここに書いておく。
しかしてこれでも状況は変らず。何より /var/log/httpd/error.log に詳細が落ちてこないので、
# /usr/sbin/setenforce 0と permissiveモード にして apache の動作確認すると、"Symbolic link not allowed:" というエラーを吐いていた。仰せの通りシンボリックリンクを使っているので、/etc/httpd/conf/httpd.conf で Options に FollowSymLinks を追加して動作確認。…で、OK。
不足していたポリシーを
# cd /etc/selinux/targeted/src/policy/とやって追加・反映。
# audit2allow -d -l >> domains/program/apache.te
# make reload
# /usr/sbin/setenforce 1で戻した後も apache の動作に問題が無ければOKなり。
25日分の追加分を含めて、初期状態から追加したポリシーは以下のとおり。
allow httpd_suexec_t user_home_dir_t:dir search;
allow httpd_suexec_t user_home_t:dir { getattr search };
allow httpd_suexec_t user_home_t:file { execute execute_no_trans getattr ioctl read };
allow httpd_sys_script_t httpd_sys_script_exec_t:file write;
allow httpd_sys_script_t httpd_sys_script_exec_t:lnk_file read;
allow httpd_sys_script_t var_t:dir { add_name remove_name write };
allow httpd_sys_script_t var_t:fifo_file write;
allow httpd_sys_script_t var_t:file { create execute execute_no_trans getattr link read unlink write };
allow httpd_t httpd_sys_script_exec_t:lnk_file read;
allow httpd_t user_home_t:dir { getattr search };
allow httpd_t user_home_t:file { getattr read };