Software

ドキュメントルートに mvコマンドでファイルを持ってくると、ブラウザからそのファイルにアクセスできない問題(SELinuxが原因の場合)

投稿日:

Laravel

忘れがちなのでメモしておきます。

環境

  • OS: CentOS 7
  • /var/www/ 以下にディレクトリが作ってあり、そこをドキュメントルートにしている。
  • SELinuxを有効にしている。

問題となる現象

  • ドキュメントルートに mvコマンドでファイルを持ってくると、そのファイルにブラウザからアクセスできない。

原因

  • mvしたファイルのセキュリティコンテキストが適切でないために、HTTPサーバのプロセスがこのファイルへアクセスしようとしても SELinuxが止めてしまう。

解決方法

問題となっているファイルに対して、以下のコマンドを実行するだけです。

$ sudo restorecon path/to/file
  • これにより、ファイルのセキュリティコンテキストを、HTTPサーバのプロセスがアクセスできるセキュリティコンテキストに変更してくれます。
  • restoreconコマンドは、対象となるパスに設定されている(ファイルそのものではなく、あくまでパスに対して設定されている)セキュリティコンテキストを適用してくれるコマンドです。

メモ

  • CentOS 7 ではデフォルトの状態で、/var/www/ 以下に HTTPサーバープロセス用のタイプ(httpd_sys_content_t)がマッピングされているため、上記のように restoreconコマンドを実行すれば、セキュリティコンテキストを修正することができます。
    • この設定は、/etc/selinux/targeted/contexts/files/file_contexts に記述されていますし、semanage fcontext --listコマンドでも確認することができます。
    • 具体的には、以下のようにマッピングされています。
    /var/www(/.*)?       system_u:object_r:httpd_sys_content_t:s0
  • もしこのようなマッピングがされていないパスであれば、chconコマンドで 明示的にファイルのセキュリティコンテキストを変更する必要があります。

(1) mvコマンドで foo.phpファイルを移動してきたところ

  • lsコマンドに -Z オプションを指定すると、各ファイルのセキュリティコンテキストが表示できます。
  • セキュリティコンテキストのフォーマットは、「ユーザー:ロール:タイプ:レベル」となっています。


scontext_001

  • foo.phpファイルのセキュリティコンテキストを見ると、「unconfined_u:object_r:user_home_t:s0」となっています。

(2) restoreconコマンドでセキュリティコンテキストを復元したところ


scontext_002

  • foo.phpファイルのセキュリティコンテキストが、「unconfined_u:object_r:httpd_sys_content_t:s0」となりました。
  • user_home_thttpd_sys_content_t に変わっています。

最終更新日: 2016-07-15

Pocket

-Software
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*

おすすめ記事&スポンサーリンク

関連記事

OWASP BWA (The Broken Web Applications) とは?

概要 以前、練習用脆弱Webアプリケーションの調査 という記事でも取り上げましたが、OWASP BWA(The Broken Web Applications)は、意図的に脆弱性を持たせたWebアプリ …

no image

CSP(Contents Security Policy)の記述例

記述例 デフォルト設定の記述をする(HTTPレスポンスヘッダの出力)。 同一オリジンも含めて全てのソース1からの読み込みを禁止する場合 Content-Security-Policy: default …

CentOS6.4:ruby-2.0.0-p247をソースからインストール

必要なパッケージをインストール $ sudo yum install zlib-devel openssl-devel Rubyのソースを取得してインストール $ cd /usr/local/src …

OWASP ZAPのXSS(Cross-site scripting)診断は何をしているのか?

OWASP ZAPのActive Scanで行っている脆弱性診断にはいろいろな項目があります。ここでは、その中の1つである「XSS(Cross Site Scripting)」の診断が何をしているのか …

pyenvでPythonの環境をつくる

Mac上での pyenv 導入メモです。 1. pyenvの導入 gitを使い、pyenvをローカルにダウンロードします。 $ git clone https://github.com/yyuu/py …


lathe