免责声明:这个问题不是为了解决在 SELinux 处于活动状态时更改 root 密码的问题,因为已经有很多指南可以解决这个问题。这更多是关于 SELinux 在内部是如何做到的。
我最近是 SELinux 的用户,但最近我与它有更多的接触。有一段时间有人问我如何在忘记密码的情况下重置 root 密码。
所以我启动了我的 CentOS,将 grub 条目编辑为类似
linux16 <kernel_location> root=/dev/mapper/centos-root rw init=/bin/bash
Run Code Online (Sandbox Code Playgroud)
我跑了passwd
然后跑了sync
并强制重启。重新启动后,使用新密码和旧密码登录都被拒绝了。
再次重新启动并向内核传递参数以禁用 SELinux ( selinux=0
)。尝试使用新密码登录,成功。之后我强制 fs 自动重新标记(通过文件.autorelabel
),并且在 SELinux 处于活动状态时,现在可以登录了。
我的问题是:为什么会发生?当仅更改密码而不更改用户或对象时,为什么重新标记会影响登录?
感谢您的关注。
TL;DR:通常的 root 密码重置在 SELinux 中不起作用。为什么?
编辑:这是在运行 CentOS7 的虚拟机上测试的,KVM 作为管理程序。