SELinux 基本編
現在の動作モードの確認
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 ポリシー設定編