4.4. SELinux のステータスおよびモードの永続的変更
「SELinux のステータスおよびモード」 で説明したように、SELinux は有効または無効にできます。有効にした場合の SELinux のモードには、Enforcing および Permissive の 2 つがあります。
getenforce コマンド、または sestatus コマンドを使用して、SELinux が実行しているモードを確認できます。getenforce コマンドは、
Enforcing
、Permissive
、または Disabled
を返します。
sestatus コマンドは SELinux のステータスと、使用されている SELinux ポリシーを返します。
~]$
sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 30
注記
SELinux を Permissive モードで実行すると、ユーザーにファイルにラベルを誤って付けることができます。SELinux が無効になっている間に作成されるファイルにはラベル付けされません。この動作により、ファイルが誤ってラベル付けされないか、または全くラベル付けされないため、Enforcing モードへの変更時に問題が発生します。ラベルが誤って設定されていたり、ファイルにラベルが付いていないために問題が発生するのを防ぐために、Disabled 状態から Permissive モードまたは Enforcing モードに変更すると、ファイルシステムのラベルが自動的に再設定されます。
4.4.1. SELinux の有効化
SELinux が有効になっている場合は、Enforcing モードまたは Permissive モードのいずれかで実行できます。以下のセクションでは、これらのモードに永続的に変更する方法を説明します。
SELinux が無効になっていたシステムで SELinux を有効にする際に、システムが起動できない、プロセスが失敗するなどの問題を回避するには、Red Hat は以下の手順に従うことを推奨しています。
- SELinux を Permissive モードで有効にします。詳細は、「Permissive モードに設定する場合:」 を参照してください。
- システムを再起動します。
- SELinux 拒否メッセージを確認します。詳細は、「拒否の検索と表示」を参照してください。
- 拒否がない場合は、Enforcing モードに切り替えます。詳細は、「Enforcing モードに設定する場合:」 を参照してください。
Enforcing モードで SELinux を使用してカスタムアプリケーションを実行するには、次のいずれかのシナリオを選択してください。
unconfined_service_t
ドメインでアプリケーションを実行します。詳細は、「制限のないプロセス」 を参照してください。- アプリケーションに新しいポリシーを記述します。詳細は、ナレッジベースの記事 カスタム SELinux ポリシーの作成 を参照してください。
4.4.1.1. Permissive モードに設定する場合:
SELinux を Permissive モードで実行していると、SELinux ポリシーは強制されません。システムは動作し続け、SELinux がオペレーションを拒否せず AVC メッセージをログに記録できるため、このログを使用して、トラブルシューティングやデバッグ、ならびに SELinux ポリシーの改善に使用できます。この場合、各 AVC は一度だけログに記録されます。
モードを Permissive へ永続的に変更するには、以下の手順に従ってください。
手順4.2 Permissive モードへの変更
- 以下のように
/etc/selinux/config
ファイルを編集します。# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
- システムを再起動します。
~]# reboot
4.4.1.2. Enforcing モードに設定する場合:
SELinux を Enforcing モードで実行している場合は、SELinux ポリシーが強制され、SELinux ポリシールールに基づいてアクセスが拒否されます。Red Hat Enterprise Linux では、システムに SELinux を最初にインストールした時に、Enforcing モードがデフォルトで有効になります。
SELinux が無効の場合は、以下の手順に従って、再度 Enforcing モードに変更してください。
手順4.3 Enforcing モードへの変更
この手順では、selinux-policy-targeted、selinux-policy、libselinux、libselinux-python、libselinux-utils、policycoreutils、および policycoreutils-python パッケージがインストールされていることを前提としています。パッケージがインストールされていることを確認するには、以下のコマンドを使用します。
rpm -q package_name
- 以下のように
/etc/selinux/config
ファイルを編集します。# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
- システムを再起動します。
~]# reboot
次にシステムを起動する際に、SELinux はシステム内のファイルおよびディレクトリーのラベルを再設定し、SELinux が無効になっている間に作成したファイルおよびディレクトリーに SELinux コンテキストを追加します。
注記
Enforcing モードに変更したあと、SELinux ポリシールールが間違っていたか、設定されていなかったため、SELinux が一部のアクションを拒否する場合があります。SELinux に拒否されるアクションを表示するには、root で以下のコマンドを実行します。
~]# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
または、setroubleshoot-server パッケージがインストールされている場合は、root で以下のコマンドを入力します。
~]# grep "SELinux is preventing" /var/log/messages
SELinux が一部のアクションを拒否する場合は、11章トラブルシューティング でトラブルシューティングを参照してください。
モードの一時的な変更は、「SELinux のステータスおよびモード」 で説明されています。