前回まででSELinuxの機能やポリシーの分析などを紹介しました。今回は、SELinuxのアクセス拒否が原因で起きる問題を、いくつかの事例を見ながら確認し、どのように設定を変更していけばよいのかを具体的に紹介します。

SELinuxが原因で起きる問題

 通常、何かアプリケーションがきちんと動作しない場合には、SELinuxが問題になっているかどうかを切り分けるために、(1)「setenforce 0」でSELinuxを無効(Permissiveモード)にして、アプリケーションが動作するかを再度確認する。(2)/etc/selinux/configを修正し、「selinux=disabled」に変更してから再起動して、アプリケーションが動作するかを再度確認する、のいずれかを行います。

 (1)または(2)の結果でアプリケーションが動作した場合には、SELinuxがアプリケーションの正常動作を妨げていると判断します。(1)に比べて(2)ではカーネルにSELinuxのLSMモジュールをロードしない状態で起動しているため、よりSELinuxの影響を排除した状態です。

 まれに「setenforce 0」にした状態でも、SELinuxモジュール自体は読み込まれているため、SELinuxモジュール自体が何らかの挙動を阻害している場合にはエラーになってしまいます。そのため、アプリケーションが動作しない際にSELinuxの問題かどうかを切り分けるには、1.でアプリケーションが動作するようになるかを確認し、動作しないのであれば(2)も試すべきでしょう。(2)でもアプリケーションが動作しない場合には、SELinuxは関係ない問題ということになります。

 本記事では、SELinuxが問題で動作しない代表的なものを二つ挙げます。一つはパッケージでインストールされた設定を変更した場合に動かなくなる例、もう一つは元々SELinuxのポリシーが足りなくてパッケージをインストールしてもきちんと動作しない例になります。

事例1:ApacheのDocument Rootを変えたら動かない

 まず分かりやすい例として、ApacheのDocumentRootを一般的な/var/www/htmlから別のディレクトリーに変更した場合を見てみましょう。

 クラスタリングをするためや、Webコンテンツの量が将来増加していくことを考慮して、NASなどの外部ハードディスクにDocumentRootを設定して公開することは、企業向けではよくあるものになります。

 以下の説明では、図1のように、DocumentRootを/extdiskとして外部ハードディスクをマウントしています。

図1●外部ハードディスクをDocumentRootに設定する
[画像のクリックで拡大表示]

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら