作为一名运维工程师,我经常遇到同事或学员忘记Linux虚拟机密码的情况。今天我将分享两种实用的密码重置方法,适用于大多数基于RHEL/CentOS的Linux发行版。这些方法不仅适用于VMware、VirtualBox等虚拟机环境,对物理机同样有效(需要现场操作权限)。
重要提示:本文所述方法仅限合法使用,请确保你拥有该系统的管理权限。未经授权访问他人系统属于违法行为。
当系统启动到GRUB菜单时(通常有4秒等待时间),快速执行以下操作:
e键进入编辑模式linux16或linux开头的行quiet参数后添加rd.break(注意前面要有空格)Ctrl+X或F10以临时启动参数启动这个操作原理是中断正常的启动流程,进入紧急救援模式。rd.break参数会让系统在挂载根文件系统前暂停,给我们提供修改的机会。
进入救援模式后,依次执行:
bash复制mount -o remount,rw /sysroot
chroot /sysroot
这里有几个关键点需要注意:
remount,rw参数将原本只读挂载的/sysroot重新挂载为可读写chroot将/sysroot设置为根目录,这样后续操作才能影响实际系统现在可以修改root密码了:
bash复制passwd
输入新密码两次(注意:密码输入时不会有任何显示,这是正常的安全机制)。看到successfully提示表示修改成功。
完成密码修改后,必须执行:
bash复制touch /.autorelabel
exit
exit
第一个exit退出chroot环境,第二个exit继续正常启动流程。/.autorelabel文件会触发SELinux在下次启动时重新标记所有文件的安全上下文。
如果记得root密码,这是最简便的方法:
passwd 用户名(将"用户名"替换为实际账户名)当root密码也忘记时,可以:
e编辑启动参数quiet后添加init=/bin/bashCtrl+X启动进入bash shellbash复制mount -o remount,rw /
passwd修改密码sync确保写入磁盘如果启动时看不到GRUB菜单:
Shift键(对于某些BIOS设置)/etc/default/grub文件,确保包含:bash复制GRUB_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT=0
grub2-mkconfig -o /boot/grub2/grub.cfg更新配置可能原因及解决方法:
touch /.autorelabelfsck.repair=yes参数不同Linux发行版可能有细微差异:
recovery mode选项替代rd.breakinit=/bin/sh参数rd.break后可能需要额外挂载/run为防止密码丢失带来的麻烦,建议:
我在实际运维中发现,90%的密码重置需求都源于缺乏有效的密码管理策略。建议团队使用专业的密码管理工具,并建立定期更换密码的规范。对于开发测试环境,可以考虑配置自动登录或预设通用密码(仅限内网隔离环境)。
最后提醒:生产环境务必谨慎操作,修改密码前建议先创建系统快照。如果系统使用了全盘加密(LUKS等),上述方法可能不适用,需要额外的恢复步骤。