画像がPermission Denied、しかも
同じディレクトリ、同じ所有者、同じ権限なのに、表示されないファイルと表示されるファイルがあるんです…
今後また起こる可能性があるかもしれないので、忘備録としてメモしておきます。
今回、お客様のサーバで間違ってファイルを消してしまい、バックアップをとっていた外付けHDDからデータを復旧することになりました。
で、該当のファイルはディレクトリに入れたはずなのですが、画像はおろか、バックアップから復旧させたデータがすべてブラウザで表示されなくなってしまいました…
ブラウザで表示されているエラーは"403 Permission Denied"。
おかしいなあ…所有者もパーミッションも、残っていたほかのデータと同じなのになあ。
調べていくうちに、表示されないデータを一旦他のディレクトリに移動させ、移動したディレクトリからデータをコピーしてもとに戻すとちゃんと表示される場合がある、という情報に行き着きました。
Permission deniedがさっぱりわからない
- Vamp Records
http://www.ivoryworks.com/blog/2009/05/255
で、何回か移動させたりコピーしたりしましたが、現象は改善されず…
私では解決できそうもなかったので、退職したニートの先輩に救済を求めました。
そしてようやくわかった原因は…「SELinuxのコンテキストの問題」だそう。
cpとmvの違い - Linux Square - @IT
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25983&forum=10
SELinuxは私もよくわかっていないのですが、
設定をPermissive(ログはとるけどアクセスを許可)かdisable(SELinuxを完全に無効にする)にすればよいみたい。
ただ、SELinuxに対するhttpdの設定のようなものをしっかりしておけば、SELinuxを無効にしなくても良いみたいです。