Linuxのセキュリティ強化のためにアクセス制御をかけてくれるSELinux。
しかし、CentOS7にはデフォルトでインストール&有効化されているために、しばしば強力なアクセス制御で我々の行く手を阻んできます。
いっその事、SELinuxを無効化してしまえ、という時のやり方を書いておきます。
どんな時に無効化すべき?
SELinuxは、折角CentOS側でセキュリティ面を心配してくれて入れておいてくれてるので、出来れば無効化しない方が安全です。
無効化するのは、開発のためにいろんなソフトを入れたり、プロセスやサービスを起動したりする時に、一々SELinuxで引っかかるのを防止するためにするのが良いでしょう。
検証のために無効化するのがベストで、最終的にはSELinuxを有効化して動くように設計した方がいいですね。
まずは今の設定を確認
無効化する前に、現在の設定を確認しましょう。
「getenforce」コマンドで状態が確認できます。
例えば以下のサンプルのようになります。
[centos@ip-172-31-39-61 ~]$ getenforce Enforcing
各レスポンスの意味は、以下の通りです。
- enforcing - SELinuxセキュリティポリシーが強制されます。
- permissive - SELinuxは強制ではなく警告を表示します。
- disabled - SELinuxポリシーはロードされていません。
一時的にSELinuxを無効化する
再起動するまでの間、一時的にSELinuxを無効化する方法は「setenforce」コマンドを使います。sudoでないと、権限不足で怒られるかもしれません。
以下はサンプルです。
sudo setenforce permissive
さて、getenforceしてみると、ちゃんと適用されています。
[centos@ip-172-31-39-61 ~]$ getenforce Permissive
永続的にSELinuxを無効化する
さて、一時的に適用するには「setenforce」コマンドで良かったですが、永続的に適用するには「/etc/selinux/config」を編集して、サーバー再起動する必要があります。
「/etc/selinux/config」を編集するにはviで開きましょう。sudoで実行した方が権限不足になりにくいです。
sudo vi /etc/selinux/config
実行すると、以下のようなファイルが開きます。
編集モード(iボタン押下)で、以下の部分を書き換えましょう。
SELINUX=enforcing
enforcing(強制)から、permissive(警告のみ)かdisabled(無効)に変更しましょう。以下は例です。
SELINUX=disabled
終わったら保存(:wq)して下さい。
※viの使い方が分からない方はググってください
その後は、サーバーを再起動しましょう。
以下のコマンドで再起動できます。
sudo shutdown -r now
サーバーはすぐに再起動されます。
getenforceしてみると、設定が適用されていると思います。
[centos@ip-172-31-39-61 ~]$ getenforce Disabled
これでSELinuxの無効化は完了です!