Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

11.2. 最も大きな 3 つの原因

以下のセクションでは、問題のラベル付け、サービスのブール値とポートの設定、SELinux ルールに関連する 3 つの原因を説明します。

11.2.1. ラベル付けの問題

SELinux を実行しているシステムでは、すべてのプロセスとファイルに、セキュリティー関連の情報を含むラベルが付いたラベルが付けられます。この情報は、SELinux コンテキスト と呼ばれます。これらのラベルが間違っている場合は、アクセスが拒否される可能性があります。誤ったラベルが付けられたアプリケーションにより、誤ったラベルがプロセスに割り当てられる場合があります。これにより、SELinux がアクセスを拒否し、ファイルに誤ったラベルが付けられたファイルが作成される可能性があります。
ラベル付けの問題の一般的な原因として、非標準ディレクトリーがサービスに使用される場合が挙げられます。たとえば、管理者が /var/www/html/ を Web サイトに使用する代わりに、管理者は /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
file-context 設定へのコンテキストの追加に関する詳細は、「永続的な変更: 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 ユーティリティーで読み取り、ファイルとディレクトリーをデフォルトのコンテキストに復元します。