我正在尝试在虚拟环境中禁用 SELinux(因为我们使用的软件组件推荐它,而不是因为我想这样做)
我尝试将其状态设置为“禁用”/etc/selinux/config
并重新启动,但与其他问题不同,重新启动后配置文件恢复为“强制”,在我的情况下,文件已成功修改,但 SELinux 仍处于强制状态。是否有其他我可以忽略的设置,导致 SELinux 不反映配置文件状态?
更新:setenforce 0
在虚拟实例上使用并重新启动正确禁用 SELinux。然而,在我们的构建过程中(应禁用 SELinux),setenforce 0
仅将 SELinux 切换为“宽容”。更奇怪的是,只需编辑配置文件就可以工作,直到添加新代码以在重新启动之前禁用 SWAP。
答案1
编辑配置文件后,您是否重新创建了 initramfs/initrd 文件和/或 GRUB 配置文件?您的构建过程中可能已经有其他一些步骤作为副作用之前为您执行此操作。
如果 initramfs 中有一个旧副本/etc/selinux/config
写着“enforcing”,那么内核一启动就会执行此操作;当根文件系统被挂载并且系统看到当前最新的/etc/selinux/config
文件时,就为时已晚了。
例如,在 RHEL 8 中,/etc/selinux/config
会检查/lib/dracut/modules.d/98selinux/selinux-loadpolicy.sh
包含在 initramfs 中的状态。