根据你提供的/proc/cmdline
和sestatus
输出,我们可以明确分析SELinux配置与实际状态不符的原因,具体如下:
一、关键信息解读
-
/proc/cmdline
内核启动参数
输出显示内核启动参数中没有包含selinux=0
(完全禁用SELinux的内核级参数),仅包含常规启动参数(如根分区UUID、crashkernel等)。
这意味着:内核在启动时默认没有禁用SELinux,仍会加载SELinux相关模块。 -
sestatus
详细状态SELinux status: enabled
:SELinux实际处于启用状态(内核已加载SELinux模块)。Current mode: permissive
:当前运行模式为宽容模式(仅记录违规,不阻止操作)。Mode from config file: disabled
:配置文件/etc/selinux/config
中设置的是disabled
(预期禁用)。
二、核心问题原因
SELinux的“禁用(disabled)”需要内核级和配置文件级的双重配合,缺一不可:
- 配置文件
/etc/selinux/config
中的SELINUX=disabled
仅表示“系统期望禁用SELinux”,但需要内核层面配合。 - 内核启动参数必须包含
selinux=0
,才能让内核完全不加载SELinux模块(真正禁用)。
你的系统中,由于内核启动参数缺少selinux=0
,即使配置文件设为disabled
,内核仍会加载SELinux模块;但此时配置文件的“禁用”设置会让SELinux进入默认的permissive模式(而非enforcing),这就是sestatus
显示“配置文件为disabled,但当前模式为permissive”的原因。
三、解决建议:完全禁用SELinux
要让SELinux真正处于disabled
状态,需补充内核参数selinux=0
,步骤如下(openEuler 22.03操作):
-
修改GRUB配置文件
编辑/etc/default/grub
,在GRUB_CMDLINE_LINUX
后添加selinux=0
,例如:GRUB_CMDLINE_LINUX="ro rhgb quiet crashkernel=512M net.ifnames=0 biosdevname=0 selinux=0"
-
生成新的GRUB配置
执行以下命令更新GRUB配置(根据系统分区结构选择):- 若使用BIOS启动:
grub2-mkconfig -o /boot/grub2/grub.cfg
- 若使用UEFI启动:
grub2-mkconfig -o /boot/efi/EFI/openEuler/grub.cfg
- 若使用BIOS启动:
-
重启系统
reboot
-
验证结果
重启后执行sestatus
,若显示SELinux status: disabled
,则表示已完全禁用。
四、补充说明
如果你的需求是“保持SELinux启用但以permissive模式运行”,无需修改内核参数,只需将/etc/selinux/config
中SELINUX=permissive
,重启后即可生效。
但根据你的配置文件设置,若明确需要完全禁用SELinux,必须按上述步骤添加selinux=0
内核参数,否则SELinux会始终处于“启用但宽容”的状态。