11.2. 問題の上位 3 つの原因
以下のセクションでは、問題の上位 3 つの原因 (ラベリングの問題、サービスのブール値とポートの設定、および SELinux ルールの進化) を説明します。
11.2.1. ラベル付けの問題
SELinux を実行しているシステムでは、すべてのプロセスとファイルに、セキュリティー関連の情報を含むラベルが付けられています。この情報は SELinux コンテキストと呼ばれます。このラベルが間違っていると、アクセスが拒否される可能性があります。ラベルが間違っていると、正しくないアプリケーションのプロセスにラベルが割り当てられる可能性があります。これにより、SELinux がアクセスを拒否し、プロセスが誤ったラベルのファイルを作成する可能性があります。
ラベル付けの問題の一般的な原因として、非標準ディレクトリーがサービスに使用される場合が挙げられます。たとえば、管理者は、Web サイトに
/var/www/html/
を使用する代わりに、/srv/myweb/
を使用します。Red Hat Enterprise Linux では、/srv
ディレクトリーには var_t
タイプのラベルが付けられます。/srv
で作成されるファイルおよびディレクトリーは、このタイプを継承します。また、/myserver
などの最上位のディレクトリーに新規作成したオブジェクトには、default_t
タイプのラベルが付けられます。SELinux は、Apache HTTP Server (httpd
) がこの両方のタイプにアクセスできないようにします。アクセスを許可するには、SELinux では、/srv/myweb/
のファイルが httpd
からアクセス可能であることを認識する必要があります。
~]#
semanage fcontext -a -t httpd_sys_content_t "/srv/myweb(/.*)?"
この semanage コマンドは、
/srv/myweb/
ディレクトリー (およびその下のすべてのファイルおよびディレクトリー) のコンテキストを SELinux ファイルコンテキストの設定に追加します。[8].semanage
ユーティリティーはコンテキストを変更しません。root で、restorecon
ユーティリティーを実行して変更を適用します。
~]#
restorecon -R -v /srv/myweb
ファイルコンテキストの設定にコンテキストを追加する方法は、「永続的な変更 - semanage fcontext」 を参照してください。
11.2.1.1. 正しいコンテキストとは ?
matchpathcon
ユーティリティーは、ファイルパスのコンテキストを確認し、そのパスのデフォルトラベルと比較します。以下の例は、ラベルが間違っているファイルが含まれるディレクトリーで matchpathcon
を使用した例を示しています。
~]$
matchpathcon -V /var/www/html/*
/var/www/html/index.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
/var/www/html/page1.html has context unconfined_u:object_r:user_home_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
この例では、
index.html
ファイルおよび page1.html
ファイルに、user_home_t
タイプのラベルが付けられています。このタイプは、ユーザーのホームディレクトリーのファイルに使用されます。mv コマンドを使用してファイルをホームディレクトリーから移動すると、ファイルに user_home_t
タイプのラベルが付けられることがあります。このタイプは、ホームディレクトリーの外に存在してはなりません。このようなファイルを正しいタイプに復元するには、restorecon
ユーティリティーを使用します。
~]#
restorecon -v /var/www/html/index.html
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0
ディレクトリー下の全ファイルのコンテキストを復元するには、
-R
オプションを使用します。
~]#
restorecon -R -v /var/www/html/
restorecon reset /var/www/html/page1.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
matchpathcon
の詳細な例は、「デフォルトの SELinux コンテキストの確認」 を参照してください。
[8]
/etc/selinux/targeted/contexts/files/
のファイルは、ファイルおよびディレクトリーのコンテキストを定義します。このディレクトリーのファイルは、restorecon
ユーティリティーおよび setfiles
ユーティリティーにより読み込まれ、ファイルおよびディレクトリーをデフォルトコンテキストに復元します。