除非禁用 Se Linux,否则无法启动

除非禁用 Se Linux,否则无法启动

由于挂载失败,系统无法启动。我将其追溯到 selinux,因为我可以按住 shift 并编辑 grub cmd 以读取 selinux=0,但有趣的是,如果我尝试宽容模式,enforcing=0,我仍然会遇到启动失败,错误提示发生了什么:

/sbin/setfiles: conflicting specifications for /usr/sbin/e2fsck and usr/sbin/fsck.ext4, using system_u:object_r:samba_share_t:s0
/sbin/setfiles: conflicting specifications for /usr/sbin/m2fs and usr/sbin/mkfs.ext4, using system_u:object_r:samba_share_t:s0

看起来不太好...

当我在禁用 selinux 的情况下启动时(因为这是唯一可以启动的方案),许多熟悉的命令似乎不起作用。Chcon 确实有效,但更改不会在启动时保留,因此在这种情况下它似乎对我没什么帮助,如果我重新启动并且 selinux 重新启动,则一切都会失败。我无法让 semanage 或 restorecon 输出任何文本。我甚至尝试使用sefattr -x security.selinux [file]从 /* 中删除错误的配置,但该更改似乎也不会在重新启动时保留。所以我完全不知道如何将 selinux 恢复为原样。

如果我运行 sudo ls -alZ,我可以看到“system_u:object_r:samba_share_t:s0”上下文无处不在并且正在运行"sudo cat /etc/selinux/targeted/contexts/files/file_contexts.local"

生成:

# This file is auto-generated by libsemanage
# Do not edit directly.

(/.*)?    system_u:object_r:samba_share_t:s0

这看起来就是问题的核心。我该如何摆脱它?libsemanage 到底是什么?如何在禁用 selinux 的情况下清除此配置?我已经尝试卸载 selinux 并删除所有 selinux 配置文件,但重新安装后此配置又恢复了。selinux 是如何记住这个错误的配置的?在全新安装时它在哪里读取这个错误信息?是不是有一个秘密文本文件隐藏在某个地方,记住了这个糟糕的 samba 上下文?

答案1

我可以semanage fcontext -d "(/.*)?"不加任何内容地替换它,使用 selinux permissive、enforcing=0 启动。第一次启动在重新标记时失败,我认为我输入了 grub cmd 参数,因为错误与 selinux=1 相同,所以我再次尝试使用 enforcing=0,并且重新标记成功,启动、登录并检查sudo ls -alZroot 和用户上下文是否再次正常

相关内容