[最終更新:2006/12/11]

HTTPD の設定

HTTP サーバーの設定が、今度の SELinux では一番難解だった。とりあえず公開できるところまできてはいるが、これからも覚えることはいっぱい。ところで、ここでの目標はデフォルトのディレクトリー /var/www/html で運用すること。一般ユーザーでの公開は諸先輩方の情報を参考にしてほしい。

1、設定ファイルの編集

# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
# vi /etc/httpd/conf/httpd.conf(変更箇所のみ記載。)
DirectoryIndex index.php index.html index.htm.var ←トップページのファイルを追加。
<Directory "/var/www/html">
(略)
Options ExecCGI Indexes FollowSymLinks ← CGI の実行を許可。
(略)
</Directory>
#AddDfefaultCharset UTF-8 ←#を付けて、デフォルト言語を使用できないように設定。
AddHandler cgi-script .cgi .pl ←#をはずし、CGIとして、cgiとplの拡張子を持つファイルとする。
:wq ←保存して終了
# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
# /sbin/chkconfig httpd on

2、タイプの変更

この時点では、ブラウザによってアクセスすると CGI 以外は正常に表示。従来のパーミッション(所有者はなにできる・・・・という設定で、DAC (任意アクセス制御)と称するようである。)の設定は、終了しているが、カウンターとして利用している dream.cgi の表示は、ERROR と表示された。
そこで、エラーログを確認してみると。
# vi /var/log/messages
type=AVC msg=audit(1164375001.574:210): avc: denied { write } for pid=4653 comm="dream.cgi" name="index.dat" dev=dm-0 ino=557557 scontext=root:system_r:httpd_sys_script_t tcontext=root:object_r:httpd_sys_script_exec_t tclass=file
と表示されている。

この意味は、dream.cgi が index.dat という file に書き込みしようとしたが、httpd_sys_script_t というドメインには、httpd_sys_script_exec_t というタイプに書き込みする権限がないということらしい・・・。
これが、例の SELinux の働きで、詳しくは、別に記載することとするが、ここはとりあえず、httpd_sys_script_t ドメインが書き込みできるよう、index.dat のタイプを変更する

# chcon -t httd_sys_script_rw_t /var/www/cgi-bin/data/index.dat ←タイプをhttpd_sys_script_rw_t に変更
# ls -Z /var/www/cgi-bin/data/index.dat ←設定が変更されたか確認。
-rw-rw-rw- root root root:object_r:httpd_sys_script_rw_t /var/www/cgi-bin/data/index.dat
これでブラウザからアクセスすると、無事 CGI が稼働し、カウンターが表示された。
CentOS 4.4 トップに戻る