温馨提示×

如何排查ubuntu selinux

小樊
43
2026-10-10 06:24:01
栏目: 智能运维

在 Ubuntu 上排查 SELinux 相关问题时,需要先明确一个事实:Ubuntu 默认并不使用 SELinux,而是使用 AppArmor。不过在某些场景(如从 RHEL/CentOS 迁移、服务器定制、容器环境)中可能会启用 SELinux。

下面按排查流程说明。


一、确认 Ubuntu 是否启用了 SELinux

1. 查看 SELinux 状态

getenforce

或

sestatus

可能结果:

  • Disabled:SELinux 未启用(最常见)
  • Permissive:启用但只记录不拦截
  • Enforcing:启用并强制拦截

如果命令不存在:

which getenforce

说明系统未安装 SELinux 工具。


二、检查是否安装了 SELinux 组件

dpkg -l | grep selinux

常见包:

  • selinux-basics
  • selinux-policy-default
  • policycoreutils

如未安装,Ubuntu 基本不可能在使用 SELinux。


三、检查内核是否支持 SELinux

cat /proc/filesystems | grep selinux

或

grep SELINUX /boot/config-$(uname -r)

Ubuntu 内核通常 支持 SELinux,但默认不启用。


四、检查启动参数(GRUB)

查看是否禁用了 SELinux:

cat /proc/cmdline | grep selinux

常见参数:

  • selinux=0 → 禁用
  • enforcing=0 → Permissive

GRUB 配置文件:

/etc/default/grub

五、如果 SELinux 是 Enforcing,如何排查问题

1. 查看 SELinux 拒绝日志

ausearch -m avc -ts recent

或

grep AVC /var/log/audit/audit.log

如没有 audit 日志:

journalctl | grep avc

2. 临时改为 Permissive(不重启)

setenforce 0

验证:

getenforce

3. 使用 sealert 分析

sealert -a /var/log/audit/audit.log

4. 常见修复方式

  • 修改文件上下文:
restorecon -Rv /path
  • 添加策略:
audit2allow -a

六、Ubuntu 官方推荐方案(重点)

Ubuntu 官方默认安全机制是 AppArmor,不是 SELinux

排查权限问题时应先确认:

aa-status

如果看到很多 enforce 的 profile,问题很可能是 AppArmor 而非 SELinux。


七、总结排查顺序

  1. getenforce → 是否启用
  2. sestatus → 当前模式
  3. dpkg -l | grep selinux → 是否安装
  4. /proc/cmdline → 启动参数
  5. ausearch / audit.log → 拒绝记录
  6. 确认是否其实是 AppArmor

如果你能提供:

  • Ubuntu 版本
  • sestatus 输出
  • 具体报错(服务起不来 / 权限拒绝)

我可以帮你精确定位是 SELinux / AppArmor / 文件权限 哪一类问题。

0 踩