答案1
我遇到过类似的问题。为了启动机器,我停止了 GRUB,编辑了 Ubuntu 启动项(按e),并暂时从启动参数中删除了 SELinux,正如@poige 在他的回答中。
由于 AppArmor 和 SELinux 冲突,我建议按照以下步骤禁用 apparmor 并安装更多 SELinux 包:
apparmor
从系统中删除sudo systemctl stop apparmor sudo apt remove apparmor # I guess you could also just disable the service sudo apt update && sudo apt upgrade -yuf # (optional) this is just to update your system without prompts
选修的
apparmor
:如果您认为将来不需要它,您可以稍后清除:sudo apt purge apparmor
重启(如果再次卡在启动阶段,请编辑 GRUB 条目以进行启动)
使用一些辅助包安装 SELinux:
sudo apt install selinux selinux-utils selinux-basics auditd audispd-plugins sudo sestatus # SELinux should be disabled now sudo reboot
- 笔记:重启系统后,SELinux 应处于宽容模式。宽容模式意味着任何原本不允许的操作都会被允许,但会记录在位于文件中的系统审计日志中
/var/log/audit/audit.log
。
- 笔记:重启系统后,SELinux 应处于宽容模式。宽容模式意味着任何原本不允许的操作都会被允许,但会记录在位于文件中的系统审计日志中
重启后,检查是否
selinux
已安装:$ sudo sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: default Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: requested (insecure) Max kernel policy version: 31
现在你应该可以使用 SELinux 并更改其设置以获得所需的安全级别。有关此内容的更多信息,请参阅在 Ubuntu 18.04 上安装 SELinux。
答案2
糟糕的是,Ubuntu 不适合使用 SELinux — 他们更喜欢 Apparmor(它达不到 SELinux 的水平,采用的方法也完全不同,但那是另一个故事)。
您遇到的问题很容易修复(这是好事的部分):
- 在启动过程中,您需要进入 GRUB 的菜单并编辑强制使用 SELinux 的内核参数:
selinux=1
。 - 取消设置它
…=0
(换句话说,用 0 替换 1)然后继续启动。
此时系统应该已成功启动,但尚未完成。
— 是时候进行长期修复了。可能是卸载 SELinux?:) 但这可能还不够。使用并检查/etc/default/grub
,sudo …YourEditor…
如果你在那里看到
GRUB_CMDLINE_LINUX_DEFAULT="security=selinux selinux=1"
将其缩短为空字符串分配后:…LT=""
然后sudo update-grub
重新生成 GRUB 的配置。
答案3
有一个永久的解决办法,你只需要按下 shift 键在恢复模式下启动,然后进入终端,然后输入 disabled=1,然后无需重启即可恢复启动,然后进入 /etc/selinux,然后进入配置文件,然后默认选择将 selinux=enforcing 改为 selinux=disabled... 你的机器就可以再次启动了!