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