現在の動作モードの確認
getenforceコマンドにより確認できる。"Enforcing"ならSELinuxが有効。"Permissive"なら抑止されている。"Permissive"の場合、アクセス制御は行われないが、ログの出力は行うので調査時に便利。
# /usr/sbin/getenforce
Enforcing
| 表示 | 状態 |
| Enforcing | 有効 |
| Permissive | 無効(ログは出力) |
| Disabled | 無効 |
一時的にSELinuxの動きを抑止するには
setenforceコマンドにより設定する。再度有効にする場合は引数に1を指定する。
# /usr/sbin/setenforce 0
# /usr/sbin/getenforce
Permissive
起動時の設定を変更する
/etc/sysconfig/selinuxのSELINUXのフィールドにenforcing/permissive/disabledのいずれかを設定しておけば、次回起動時にそのモードで立ち上がる。
プロセスのドメイン/ファイルのタイプの確認
psコマンドで-Zオプションや--contextオプションを指定すると「ユーザ:ロール:ドメイン」の形式で表示される。
# ps -Z
LABEL PID TTY TIME CMD
user_u:system_r:unconfined_t 4814 pts/6 00:00:00 su
root:system_r:unconfined_t 4817 pts/6 00:00:00 bash
root:system_r:unconfined_t 5438 pts/6 00:00:00 adsl-connect
root:system_r:unconfined_t 5736 pts/6 00:00:00 ps
ファイルのラベルを確認する場合もlsに-Zオプションや--contextオプションを与えることで「ユーザ:ロール:タイプ」の形式で表示される。
# ls -lZ
-rw-rw-r-- tomita tomita user_u:object_r:user_home_t test.pl
-rw-rw-r-- tomita tomita user_u:object_r:user_home_t test.txt
-rw-rw-r-- tomita tomita user_u:object_r:user_home_t test2.php
ログの調査
ログは以下のファイルに吐かれる。
/var/log/audit/audit.log
ログの中で"denied"になっているようなものがあると、SELinuxによってアクセスが拒否されたことを示す。
type=AVC msg=audit(1141465777.865:3330270): avc: denied {
search } for pid=10848 comm="iiimd" name=/ dev=hda3 ino=2
scontext=root:system_r:i18n_input_t
tcontext=system_u:object_r:home_root_t tclass=dir
上記のログはiiimdが/にアクセスして拒否されたことを示している。scontextはプロセスのコンテキスト。tcontextはファイルのコンテキスト。
関連
SELinux ファイルタイプ設定編
SELinux ポリシー設定編