文章

Linux重置root密码

本教程来自“十四五”职业教育国家规划教材——Linux网络操作系统项目教程

进入紧急救援模式

首先先重启一下,使用物理按键或者reboot,在引导页面按e进入内核编辑界面。

在最后添加:

1
rw rd.break

QQ20241029-103940

CTRL+X退出后进入紧急救援模式,依次进行下面操作:

1
2
3
4
5
6
chroot /sysroot
passwd
输入两次密码,注意无提示,直接输入即可
touch /.autorelabel
exit
reboot

QQ20241029-104139

重启就可以使用新的密码登录了,妥了!

附录:在重置Red Hat Enterprise Linux的root密码时,“touch /.autorelabel”命令是做什么的?

1
2
3
`rd.break`参数在控制权传递给内核之前中断引导过程。此时,当你运行`passwd`命令进行密码重置时,相关的影子文件(/etc/shadow)会被修改为错误的SELinux上下文。`touch /.autorelabel`命令在根目录下创建一个名为`.autorelabel`的隐藏文件。在下次启动时,SELinux子系统会检测到这个文件,然后重新标记系统中所有文件的正确SELinux上下文。在大型磁盘上,这个过程可能需要相当长的时间。

文档中还提到了一种替代完全重新标记的方法。首先,在编辑GRUB条目时使用参数`rd.break enforcing=0`。这将导致系统最终以SELinux设置为宽容模式(警告但不阻止)启动。然后,按照之前相同的方式更改密码。继续引导过程并允许系统启动。一旦系统启动,运行`restorecon /etc/shadow`以恢复`/etc/shadow`文件的正确SELinux上下文。然后,运行`setenforce 1`以重新启用SELinux并开始使用系统。
本文由作者按照 CC BY 4.0 进行授权