Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
8.2. 問題の原因トップ 3
以下のセクションでは、問題の原因のトップ 3 を説明します。これらは、ラベリングの問題、ブール値およびサービスのポートの設定、SELinux ルールの展開、です。
8.2.1. ラベリングの問題
SELinux 実行中のシステム上では、すべてのプロセスとファイルにセキュリティー関連の情報を含むラベル付けがされます。この情報は、SELinux コンテキストと呼ばれます。このラベルが間違っていると、アクセスは拒否されます。アプリケーションのラベリングが間違っていると、移行先のプロセスにも正しいラベルがないことになり、結果として SELinux がアクセスを拒否することになりかねません。さらにはこのプロセスが、間違ったラベルのファイルを作成することにもなります。
一般的なラベリングの問題は、非標準のディレクトリーをサービスに使う場合に起こります。例えば、Web サイトに
/var/www/html/
を使うのではなく、管理者は /srv/myweb/
を使いたかったとします。Red Hat Enterprise Linux 6 では、/srv/
ディレクトリーは var_t
タイプでラベル付けされます。作成されたファイルとディレクトリーおよび /srv/
はこのタイプを継承します。また、(/myserver/
のような)新規作成のトップレベルのディレクトリーも default_t
タイプでラベル付けされます。SELinux は、Apache HTTP Server (httpd
) がこれら両方のタイプにアクセスできないようにします。アクセスを許可するには、/srv/myweb/
にあるファイルが httpd
にアクセス可能であることを SELinux が認識している必要があります。
~]# semanage fcontext -a -t httpd_sys_content_t "/srv/myweb(/.*)?"
この
semanage
コマンドは、/srv/myweb/
ディレクトリー (およびその下にある全ファイルとディレクトリー) のコンテキストを SELinux ファイル設定に追加します[12]。semanage
コマンドはコンテキストを変更しません。Linux root ユーザーで restorecon
コマンドを実行し、変更を適用します。
~]# restorecon -R -v /srv/myweb
ファイルコンテキスト設定へのコンテキスト追加に関する詳細情報は、「永続的な変更: semanage fcontext」 を参照してください。
8.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 コンテキストのチェック」 を参照してください。
[12]
/etc/selinux/targeted/contexts/files/
内のファイルは、ファイルおよびディレクトリーのコンテキストを定義します。このディレクトリー内のファイルは restorecon
と setfiles
が読み取り、ファイルとディレクトリーをデフォルトのコンテキストに復元します。