RHEL系 SELinuxを無効にする方法

最終更新日

Rathat系で採用されているSELinuxを恒久的に無効にしたり、一時的に有効・無効にする方法を記載しています。

RHEL Fedora CentOS7以降 Rocky Alma

公式

SELinuxとは簡潔に説明すると、Webサーバーが乗っ取られた場合などにWebサーバーのプロセスを実行しているユーザーもしくはプロセスが、ホームディレクトリやDBサーバー等のリソースにアクセスができると情報漏洩やシステム全体を破壊することができてしまうので、他のリソースに影響を最小限するセキュリティ機能となります。そのため、開発環境や初期のサーバー構築では、SELinuxが煩わしかったりします。

特に初期構築時はSELinuxなのか設定ミスなのか切り分けがしづらいので、一度、無効に開発環境やローカルネットワーク内(社内向け)では不要でしょう。

状態の確認

「getenforce」コマンドを実行します。次の表示がされます。

  • Enforcing:SELinuxセキュリティポリシーが強制されます。
  • Permissive:SELinuxポリシーを強制されず、アクセス拒否ログを記録します。(動作はしてないけど、拒否はせずログに残すよというモード)
  • Disabled:SELinuxは無効(ポリシーが読み込まれず、アクセス拒否したログが残らない)
getenforce
getenforce画面

実行結果がEnforcingとなっているので、SElinuxが有効となっています。これを恒久的に無効にします。

恒久的に無効にする。

sudo vi /etc/selinux/config
selinux/config実行画面

赤枠の部分をenforcingからpermissiveかdisabledに変更します。

selinux/config実行画面

SELINUX=enforcingの前の「#」を付加して、コメントアウトします。その下にSELINUX=disabledを追加します。

設定変更後のトラブルに備えて、設定前の値はコメントアウトで残しておくと便利です。

「/etc/selinux/config」を変更した場合は、サーバー再起動で反映されます。sudo か shutdownコマンドで再起動します。

コマンドは管理者権限で実行する必要があります。su-でrootにスィッチするか、sudoで実行します。

sudo reboot
sudo shutdown -r now

起動後に「getenforce」でDisabledになっていることを確認

getenforce実行画面

一時的に無効・有効にする方法

再起動せずに一時的にSElinuxを無効・有効にするには、「setenforce」コマンドを使用します。再起動するまで有効になります。

一時的に無効にするには、「setenforce」コマンドの引数に0をセットします。

 setenforce 0
getenforce実行画面

コマンド実行後は、「getenforce」で確認する。Enforcing→Permissiveに変更されていることを確認。

一時的に無効にするには、「setenforce」コマンドの引数に1をセットします。

 setenforce 1
getenforce実行画面

コマンド実行後は、「getenforce」で確認する。Permissive→Enforcingに変更されていることを確認。