今日あったトラブルとその解決メモ。
現象
- sudo yum updateを実行し400個前後のモジュールがアップデートされる。
- リブート後、httpdが起動しなくなる。修正し起動したが一部表示できない画像、アクセスできないファイルが出てきた
原因
アップデートにより、httpdの構成が変わってしまった模様。httpd本体が変わったのかは前Versionを控えてないのでわからず。
- コンパイルのオプションが違うのか.confのコマンドエラーが出る(alias、Orderなど)。
- Blogの一部のサムネイル画像、多くのフルサイズ画像、ルートにあるmp4などが表示されない。直接アクセするとPermision deniedになる。
処置
.confのエラーについては、httpd.confにてコメントアウトしてあった全DSOを有効にしてOK。またmod_mem_cacheが抜けたからコンパイルしなおしかも。
Permision deniedについてはかなり悩んだ。色々な言葉で検索をしているうちに、一つのサイトに巡り会えました。
FC4/Apache/一般ユーザのウェブ表示 – Pocketstudio.jp Linux Wiki
もし SELinux が有効になっている場合は【 Forbidden 】とエラーが出てしまいます。You don’t have permission to access 対象ファイル、のエラーです。
Apache のエラーログにも以下のような記録が残ります。
[Sun Jun 19 21:05:42 2005] [error] [client 192.168.11.102] (13)Permission denied: access to /~akane/test.html denied原因は SELinux の【 タイプ遷移 】によるセキュリティーポリシーの制限を受けるからです。SELinux では新しくディレクトリを作成すると、その親ディレクトリのセキュリティコンテキストを継承します。
まさにこれでした。
自分のログも確認してみます
#tail /var/log/httpd/error_log [Mon Jul 05 23:19:36 2010] [error] [client xxx.xxx.xxx.xxx] (13)Permission denied: access to /wp/wp-content/uploads/2010/07/20100701-05.jpg denied, referer: http://dolls.tokyo/
ずばり。
参考通りにさらに状態を調査
/sbin/ausearch -m AVC
同じくBlockされているログが出ているのを確認。
/sbin/restorecon -R /var/www
にて見事に直りました。
# sudo ls -alZ /var/www drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 . drwxr-xr-x. root root system_u:object_r:var_t:s0 .. -rwx------. nobody apache unconfined_u:object_r:httpd_sys_content_t:s0 awstats.cron drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons drwx---rwx. nobody apache unconfined_u:object_r:httpd_sys_content_t:s0 public_html
元々”unconfined_u:object_r:user_home_t:s0″であったpublic_htmlが”unconfined_u:object_r:httpd_sys_content_t:s0″に変わっています。-alZなんてパラメータも初めて知ったし。
またSELinuxに苦しめられました。SELinuxを守る意義すらわかってないのに。