FC6のデフォルトがenforcingモードであることはすでに述べました。もともと付いているデフォルトのポリシーで、既に多くの設定が行われているので、ある程度は問題なく動作するはずです。しかし、システムやアプリケーションの設定や、Webコンテンツなどの追加/変更を行うと、うまく動かなくなることがあります。
問題の切り分け方としては、enforcingモードで動作に問題があった場合、permissiveモードにして、再度動作させてみるのが鉄則です。これにより、「SELinuxの(ポリシーの)せいで動かないのか、ほかに原因があるのか」が判別できます。permissiveモードでも動作しないのであれば、SELinuxが原因ではありません。ほかの設定を確認しましょう。
今回のポイント: システム動作に問題があったら、まずpermissiveモードに!
システム構築時には、まずpermissiveモードで動作するように設定し、先にポリシー以外の設定を行うことをお勧めします。SELinuxのポリシーは、ほかの設定に影響を受ける場合があり、システム構築の最後に扱う方が効率的だからです。
動作モードの確認と切り替え方法は幾つかありますが、最も使うのは「SELinuxの動作モードをコマンドラインで切り替えるには」に紹介されている「getenforce」コマンドと「setenforce」コマンドです。getenforceコマンドは現在の動作モードを表示し、setenforceコマンドは後ろに0または1を引数として実行することで、それぞれpermissiveモード、enforcingモードに切り替えることができます。
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive
# setenforce 1
# getenforce
Enforcing
getenforceコマンドは一時的な変更なので、リブートすると元の設定に戻ってしまいます。boot時の動作モードの設定は、/etc/selinux/configファイルの「SELinux=〜」の行に書かれています。システム構築時など必要に応じて変更しましょう。
# 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 - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
enforcingモードで起動すらしなくなった場合は、bootパラメータを修正しpermissiveモードで起動させることができます。FC6では以下の手順で可能です。
今回は、トラブル対処の第一歩として、「とりあえずpermissiveモードにする」ことを説明しました。次回からは、実際の問題解決方法に入りたいと思います。おたのしみに。
Copyright © ITmedia, Inc. All Rights Reserved.