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
工具添加新规则,请将您的问题与 审计日志中 SELinux 拒绝中列出的 示例匹配。
其他资源
-
您系统上的
sealert (8)
手册页