深色模式
救援模式重置 root 密码
摘要:忘了 root 密码怎么办?本文在自己的虚拟机上演练:通过 GRUB 编辑内核参数进入单用户/救援模式,重设 root 密码。前提:能操作虚拟机控制台(云上 VNC/带外)。请勿在生产未授权操作。
适用环境
bash
# 仅适用于你拥有管理权的测试虚拟机
systemctl reboot # 重启,准备在 GRUB 界面操作1
2
2
一、在 GRUB 打断启动
text
1) 开机出现 GRUB 菜单时,按 e 编辑选中项
2) 找到以 linux 开头的行(含 ro quiet 等)
3) 把 ro 改为 rw,并在行尾加:init=/bin/bash
(或加 systemd.unit=rescue.target 进救援)
4) 按 Ctrl+X 用修改后的配置启动1
2
3
4
5
2
3
4
5
二、重置 root 密码
bash
# 启动后直接进入 shell(根分区已可写)
passwd root # 输入两次新密码
# 若用 rescue.target,系统会要求先给 root 设密码再继续1
2
3
2
3
三、SELinux 环境额外步骤
注意
开启了 SELinux 的发行版(如 CentOS/RHEL),改完密码需打标记,否则策略不让登录:
bash
touch /.autorelabel # 下次启动重打 SELinux 标签
exec /sbin/init # 或 reboot -f 重启1
2
2
验证
- [ ] 重启后能用新密码
su -或 ssh 登录 root - [ ] SELinux 机器登录正常(已打标签)
- [ ] 演练后还原环境,不在生产误用
常见坑
- 只改 ro→rw 不够:还必须指定 init 或 rescue target,否则仍要密码。
- 云上无 GRUB 界面:部分云厂商隐藏 GRUB,需用"控制台/VNC"或救援镜像。
- 忘了 /.autorelabel:SELinux 开启时会导致登录循环或拒绝。
- 误改其它内核参数:编辑只针对本次启动,不影响磁盘上的 grub 配置,可放心试。