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
    Copy to Clipboard Toggle word wrap
  2. 如果上一步中的输出没有包含清晰的建议:

    • 启用全路径审核查看访问对象的完整路径,并让其他 Linux Audit 事件字段可见:

      # auditctl -w /etc/shadow -p w -k shadow-write
      Copy to Clipboard Toggle word wrap
    • 清除 setroubleshoot 缓存:

      # rm -f /var/lib/setroubleshoot/setroubleshoot.xml
      Copy to Clipboard Toggle word wrap
    • 重现问题。
    • 重复步骤 1。

      完成这个过程后,禁用全路径审核:

      # auditctl -W /etc/shadow -p w -k shadow-write
      Copy to Clipboard Toggle word wrap
  3. 如果 sealert 只返回 catchall 建议,或者建议使用 audit2allow 工具添加新规则,请将您的问题与 审计日志中 SELinux 拒绝中列出的 示例匹配。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat