5.2. 分析 SELinux 拒绝信息


确认 SELinux 会阻止您的场景后,可能需要在进行修复前分析根本原因。

先决条件

  • policycoreutils-python-utilssetroubleshoot-server 软件包已安装在您的系统中。

步骤

  1. 使用 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
  2. 如果上一步中的输出没有包含清晰的建议:

    • 启用全路径审核查看访问对象的完整路径,并让其他 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
  3. 如果 sealert 只返回 catchall 建议,或者建议使用 audit2allow 工具添加新规则,请将您的问题与 审计日志中 SELinux 拒绝中列出的 示例匹配。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部