5.2. SELinux 拒否メッセージの分析
SELinux がシナリオをブロックしていることを 特定 したら、修正する前に原因分析が必要になる場合があります。
前提条件
-
policycoreutils-python-utils
パッケージおよびsetroubleshoot-server
パッケージがシステムにインストールされている。
手順
以下のように、
sealert
コマンドを実行して、ログに記録されている拒否の詳細をリスト表示します。$ sealert -l "*" SELinux is preventing /usr/bin/passwd from write access on the file /root/test. ***** Plugin leaks (86.2 confidence) suggests ***************************** If you want to ignore passwd trying to write access the test file, because you believe it should not need this access. Then you should report this as a bug. You can generate a local policy module to dontaudit this access. Do # ausearch -x /usr/bin/passwd --raw | audit2allow -D -M my-passwd # semodule -X 300 -i my-passwd.pp ***** Plugin catchall (14.7 confidence) suggests ************************** ... Raw Audit Messages type=AVC msg=audit(1553609555.619:127): avc: denied { write } for pid=4097 comm="passwd" path="/root/test" dev="dm-0" ino=17142697 scontext=unconfined_u:unconfined_r:passwd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file permissive=0 ... Hash: passwd,passwd_t,admin_home_t,file,write
前の手順で取得した出力に明確な提案が含まれていない場合は、以下のコマンドを実行します。
完全パス監査を有効にして、アクセスしたオブジェクトの完全パスを表示し、追加の Linux Audit イベントフィールドが表示されるようにします。
# auditctl -w /etc/shadow -p w -k shadow-write
setroubleshoot
キャッシュを削除します。# rm -f /var/lib/setroubleshoot/setroubleshoot.xml
- 問題を再現します。
ステップ 1 を繰り返します。
プロセスが完了したら、完全パスの監査を無効にします。
# auditctl -W /etc/shadow -p w -k shadow-write
-
sealert
がcatchall
提案を返すか、audit2allow
ツールを使用して新しいルールを追加するように提案した場合は、Audit ログの SELinux 拒否 で説明されている例と問題を一致させます。
関連情報
-
システムの
sealert(8)
man ページ