温馨提示×

centos selinux为何失效

小樊
40
2026-10-08 16:55:47
栏目: 智能运维

在 CentOS 中,SELinux “失效”通常不是真的坏掉了,而是被关闭、被绕过或配置不对。下面按最常见原因逐一说明,并给出排查方法。


一、SELinux 被彻底关闭(最常见)

1️⃣ 当前状态已 Disabled

getenforce

可能结果:

  • Enforcing ✅ 正常
  • Permissive ⚠️ 只记录不拦截
  • Disabled ❌ 已关闭(完全失效)

查看启动状态:

sestatus

如果显示:

SELinux status:                 disabled

说明 内核层面已关闭

2️⃣ 配置文件关闭

cat /etc/selinux/config

常见错误:

SELINUX=disabled

✅ 正确应为:

SELINUX=enforcing

⚠️ 注意:
从 disabled 改为 enforcing 必须重启系统


二、系统根本没加载 SELinux

1️⃣ 内核未启用 SELinux

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

应看到:

CONFIG_SECURITY_SELINUX=y

2️⃣ 启动参数被强制关闭

检查 grub:

cat /proc/cmdline | grep selinux

如果有:

selinux=0

或

enforcing=0

说明被内核参数关闭了。

修改:

vi /etc/default/grub

删除 selinux=0 然后:

grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

三、SELinux 策略未安装或损坏

1️⃣ 策略包缺失

rpm -qa | grep selinux-policy

应至少存在:

selinux-policy
selinux-policy-targeted

安装:

yum install selinux-policy-targeted

四、文件系统不支持(极少但存在)

SELinux 依赖:

  • ext4
  • xfs

如果是:

  • vfat
  • ntfs
  • 某些网络文件系统

SELinux 会自动失效或不生效

检查:

mount | grep " / "

五、被容器 / 虚拟环境绕过

Docker / K8s

容器中 SELinux 通常由宿主机控制 容器内 getenforce 不可信

云镜像 / 模板

很多云镜像默认:

SELINUX=permissive

六、误以为“失效”的真实情况

现象 实际原因
服务能跑 Permissive 模式
改了规则没用 没 restorecon
重启又失效 config 没改对
日志没报错 没开 auditd

七、快速自检清单 ✅

getenforce
sestatus
cat /etc/selinux/config
grep selinux /proc/cmdline
rpm -qa | grep selinux-policy

如果你愿意,可以贴出:

  • sestatus 输出
  • /etc/selinux/config
  • 具体“失效”的现象(比如什么服务不受限)

我可以帮你精准判断是哪种失效。

0 踩