CentOS4.x CentOS5.x CentOS6.x Apache2

apache2のドキュメントルートの変更を行います

SELinux有効状態では、普通にディレクトリを変更するたけではうまくいきません

前ページまでの設定では、SELinux絡みのエラーがでて、Apacheが起動できませんでした

このページで、このエラーを取り除くべく設定をしていきます

新しいドキュメントルートにSELinuxのラベルをつける

旧ドキュメントルート(/var/www/下)のラベルの情報は以下の様になっています。

# ls --context /var | grep www
  drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t www

# ls --context /var/www/
  drwxr-xr-x  root     root     system_u:object_r:httpd_sys_script_exec_t cgi-bin
  drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t error
  drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t html
  drwxr-xr-x  root     root     system_u:object_r:httpd_sys_content_t icons

というわけで、新しいドキュメントルート(/home/www以下)に対し、ラベルを設定します。

# chcon system_u:object_r:httpd_sys_content_t /home/www -R
# chcon system_u:object_r:httpd_sys_script_exec_t /home/www/cgi-bin -R

1行目で、/home/www配下(wwwも含む)すべてのディレクトリ/ファイルに対しラベルを設定し、

2行目で、/home/www/cgi-bin配下(cgi-binも含む)すべてのディレクトリ/ファイルに対し、ラベルを設定しています。(cgi-bin以下だけ、httpd_sys_script_exec_tになっている為)

あと、"-R" 指定で、再帰的に配下のディレクトリ/ファイルすべてを対象にします。

CGIによる書き込みディレクトリ・ファイルに対するラベル付け

CGIプログラムによるディレクトリ以下へのファイルの作成やファイルの更新がある場合、そのファイルまたはディレクトリに対しては以下のラベルを設定しないといけません。

system_u:object_r:httpd_sys_script_rw_t

例えば、カウンタcgiのカウンタ数保持ファイル(例えばcounter.dat)に対しては以下の様にラベルを設定します。

# chcon system_u:object_r:httpd_sys_script_rw_t counter.dat

再びapache2を起動してみる

rootにて、以下を実行してapache2を再起動してみます。

# /etc/rc.d/init.d/httpd restart
  httpd を停止中:                                            [  OK  ]
  httpd を起動中:                                            [  OK  ]

見事、SELinux有効下でapache2が起動しました。

終わりに

SELinuxはディレクトリに適切なアクセス権限を意味するラベルを付与しないとエラーとなってしまいます

面倒かもしれませんが、セキュアな環境を作るためにはしっかり設定することが大切です

「どうも動かないなー」と思ったときには、真っ先にSELinuxを疑ってみるのもよいかもしれませんね

参考までに、SELinuxを無効にする方法はこちらに記載しています

目次

  • Page.1
    • 変更する内容
    • apache2設定ファイルの変更
    • apache2設定ファイルの変更
    • apache2を再起動してみる - エラー発生
  • Page.2
    • 新しいドキュメントルートにSELinuxのラベルをつける
    • 再びapache2を起動してみる - 成功

関連ページ