CentOS虚拟机忘记root密码快速安全重置的全流程
作者:代码怪兽大大作战
在本地使用虚拟机进行测试时,长时间不登录很容易忘记密码,本文将详细介绍如何通过GRUB引导参数修改,安全重置CentOS虚拟机的root密码,本方法适用于CentOS 7/8/9及兼容系统,需要的朋友可以参考下
一、操作原理图解
二、详细操作步骤
1. 进入GRUB编辑模式
- 启动虚拟机时,在CentOS启动Logo出现前快速按
E
键进入编辑。 - 如果是UEFI启动,先按
ESC
键进入GRUB菜单,再选择内核项后按E
。
- 进入编辑模式
2. 修改启动参数
- 定位到以
linux16
(CentOS7)或linux
(CentOS8/9)开头的那行。 - 将
ro
(只读)改为rw
(读写)。 - 在行尾追加
init=/sysroot/bin/sh
。 - 注意各参数间保持空格分隔。
3. 进入单用户模式Shell
- 按
Ctrl+X
或F10
启动修改后的引导项。 - 系统进入临时root shell,提示符通常为
:/#
。
4. 挂载系统并重置密码
# 重新挂载根文件系统为读写 mount -o remount,rw / # 进入系统根目录环境 chroot /sysroot # 设置环境变量,避免乱码 LANG=en # 修改root密码,输入两遍新密码 passwd root
看到 passwd: all authentication tokens updated successfully.
表示密码重置成功。
5. SELinux重标记(重要)
CentOS默认启用SELinux,修改密码后需重标记文件系统,避免登录失败。
touch /.autorelabel
查看SELinux状态(可选)
sestatus
若显示 disabled
,则可跳过上步。
6. 安全退出并重启
# 退出chroot环境 exit # 强制重启系统,触发SELinux重标记 reboot -f
系统重启过程中可能耗时较长,请耐心等待。
7. 使用新密码登录
重启完成后,使用刚设置的密码登录系统即可。
三、注意事项与技巧
SELinux重标记问题:
若忘记执行 touch /.autorelabel
,可能导致系统登录失败。重启进入GRUB编辑,追加 enforcing=0
以临时禁用SELinux。
调整GRUB超时时间,方便操作:
编辑 /etc/default/grub
,修改:
GRUB_TIMEOUT=5 GRUB_DISABLE_SUBMENU=true
保存后执行:
grub2-mkconfig -o /boot/grub2/grub.cfg
重置其他用户密码:
chroot /sysroot passwd username
文件系统只读问题:
如果遇到无法写入,执行:
mount -o remount,rw /sysroot e2fsck -f /dev/mapper/centos-root
根据实际设备名调整。
四、常见问题解答
问题 | 解决方案 |
---|---|
GRUB界面按E无反应 | 检查虚拟机EFI设置,尝试开启/关闭EFI或从虚拟机管理界面重启到固件菜单。 |
密码重置后仍无法登录 | 进入单用户模式时追加 enforcing=0 参数禁用SELinux,检查日志:journalctl -p 3 -xb |
文件系统只读无法修改 | 使用 mount -o remount,rw /sysroot 强制读写,必要时检查磁盘健康。 |
以上就是CentOS虚拟机忘记root密码快速安全重置的全流程的详细内容,更多关于CentOS root密码重置的资料请关注脚本之家其它相关文章!