ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

虚拟机忘记root密码?从原理到实操的全流程重置指南

虚拟机忘记root密码?从原理到实操的全流程重置指南 如果你折腾虚拟机的时间长了迟早会遇到这么一件事CentOS 也好、Ubuntu 也好测试环境里一两个月没碰当初随便敲的 root 密码早就忘得干干净净。重启之后卡在登录界面试了十多遍全是 Access denied那一刻真的会怀疑人生。如果这台机器是个半成品生产环境或者跑了好几个内部服务就更焦虑了。好在虚拟机启动流程是可控的root 密码并非什么不可破解的加密堡垒。这篇文章我用 VMware Workstation 跑 Linux 来演示围绕“重置虚拟机 root 密码”这件事把原理、实操、常见坑一次讲明白。不适合你拿来干坏事——它就是系统管理员对本机做紧急维护的标准手段类似忘带钥匙找开锁师傅证明锁归你之后合法进门。这里覆盖 CentOS/RHEL 7/8、Ubuntu 18/20/22 这类最常见的发行版看完照着敲就能把系统救回来。1. 核心思路为什么修改内核启动参数就能重置 root 密码1.1 密码文件、认证机制与单用户模式的基本原理Linux 系统的用户密码哈希主要存放在/etc/shadow文件里root 用户同样如此。该文件权限是 000 或者 600平时普通用户看都看不到只有 root 或者拥有CAP_DAC_OVERRIDE权限的进程能读写。既然我们连 root 都登不进去了为什么还能改 shadow 文件呢关键点在于单用户模式。Linux 系统启动时内核加载完毕后会执行 PID 为 1 的 init 进程CentOS 6 以前是 SysV initCentOS 7 之后是 systemd。如果启动时将参数里加入single、s、S或1init 进程就会直接拉起一个 root shell而不去读取正常的登录认证流程。简单理解系统还没进“正常运行态”自然也就没有“校验登录密码”这回事一切由系统自己的最高权限说了算。但这还不够因为很多发行版默认在单用户模式 shell 里把根文件系统挂载成了只读ro你要直接执行passwd root会报错。所以完整链路是进入单用户模式 → 重新以读写模式挂载根分区 → 修改密码 → 重启生效。1.2 为什么要借助 Grub“破解”而不是直接挂载磁盘改文件你可能会想把虚拟机硬盘拆下来挂到另一台 Linux 上直接 chroot 进去不就行了思路一致但操作繁琐且受限于加密。很多服务器使用了 LUKS 全盘加密就算你把磁盘挂到别的机器上没有密钥也无法解密。而通过虚拟机自带的启动菜单去干预 Grub本质上是在本机内存环境里直接操作没有额外硬件依赖所以适用性最广也是 Linux 认证考试里必考的系统修复手段。从安全角度讲只要能物理接触到机器理论上就能重置 root 密码。这也是为什么 BIOS 密码、Boot Loader 密码显得如此重要——如果攻击者能改 Grub 启动项root 密码等于形同虚设。所以这篇文章介绍的操作本身就是 Linux 管理员的基本功一点都不神秘。2. 重置前的准备工作快照、备份与启动方式确认2.1 做好快照或备份再动手在冲进 Grub 菜单之前我最强烈的建议是先把虚拟机做个快照。尤其是服务器上有数据库或重要配置文件的场景快照能让你随时回到操作前的状态。VMware Workstation 里操作很简单虚拟机菜单 → 快照 → 拍摄快照命名写清楚比如“dump before pwd reset”。理由很简单Grub 菜单操作过程中手抖误删了其他启动项快照还能恢复。如果虚拟机本身不能被挂起生产环境不允许中断那至少备份一下/etc/shadow和/etc/passwd文件。当然人都进不去系统了备份 shadow 只能靠挂载 Live CD 或者在单用户模式下先复制一份。提前想清楚策略确认操作窗口期尽量不要大白天对生产虚拟机做这种事。2.2 确认虚拟机的固件类型BIOS 还是 UEFI重置 root 密码的步骤在 BIOS 和 UEFI 固件虚拟机上略有不同。现在 VMware Workstation 默认创建较新 Linux 虚拟机时往往是 UEFI 优先但老虚拟机还是 BIOS。怎么确认开机进入 VMware 启动画面时按CtrlR有的版本是CtrlG接管鼠标后按 F2进入固件设置界面看菜单风格——蓝底白字是 BIOS图形化设置界面或纯文字但带 Boot Manager 选项的通常是 UEFI。BIOS 启动模式下开机的 VMware 画面闪现之后迅速用鼠标点进虚拟机并按住Shift或不断敲Esc键可以调出 Grub 菜单。UEFI 模式下通常敲Esc进入 Grub 菜单的概率更高。只要看到类似下图的界面就成功了一半GNU GRUB version 2.02 *CentOS Linux 7 (Core) CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-...)万一按下后没反应重启再试。Grub 菜单出现时机只有开机后的短短一秒手速要快。这里我不能给截图但你可以记住只要看到字符界面列出系统内核版本就是 Grub 了。3. CentOS / RHEL 7/8 系列重置 root 密码的完整实操3.1 在 Grub 启动项上加入 rd.break 参数CentOS 7 和 RHEL 7 之后采用了 systemd求single进入单用户模式变得越来越不直观虽然仍然保留兼容。官方推荐的密码重置手法是rd.break它的原理是在内核启动的早期阶段也就是 initramfs 处理之后、根文件系统即将正式切换之前强制让系统停顿下来丢给你一个 root shell。具体操作步骤开机后进入 Grub 菜单光标定位到你要启动的系统内核项比如CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)。按e进入编辑模式。找到以linux16或linux开头的那一行行尾通常有... quiet之类的参数。将光标移动到该行结尾空一格后输入rd.break比如linux16 /vmlinuz-3.10.0-1160.el7.x86_64 root/dev/mapper/cl-root ro ... rd.break按CtrlX引导启动。引导过程中系统会在 initramfs 阶段弹出一个 shell 提示符大致长这样switch_root:/#这个提示符说明你现在处于 initramfs 环境里目标系统的根文件系统还没挂载到/sysroot吗实际上 systemd 在rd.break时会自动将物理根分区挂载到/sysroot目录让你直接 chroot 过去。3.2 chroot 到真实根目录并修改密码在switch_root:/#提示符下依次执行mount -o remount,rw /sysroot chroot /sysroot第一行命令的含义很简单因为和单用户模式一样/sysroot此时是只读挂载的不重新挂载为读写你改了密码也写不回磁盘。第二行chroot /sysroot把当前环境切换进真实磁盘里的根文件系统此时你看到的/etc/shadow才是目标系统真正在用的那个。然后直接改密码passwd root命令会提示输入两次新密码。这里有一个经验密码尽量符合系统默认的密码复杂度要求尤其是 CentOS 默认安装了 pwquality 模块的太简单的密码直接不让你改。如果你内网测试机想用简单的 123456就多敲几遍满足复杂度。当然也可以用echo 123456 | passwd --stdin root这种方式避开交互但 CentOS 8 以后这个--stdin选项依然可用建议交互式操作更保险。改完密码后依次退出exit exit第一个exit退出 chroot 环境回到switch_root:/#第二个exit会让系统继续重启流程。注意如果第二个exit没反应可以手动执行reboot -f强制重启。3.3 SELinux 重新标记问题改了密码导致的权限错乱这里必须提个容易踩的深坑。使用rd.breakchroot方式重置密码后有些情况下系统重启会卡在SElinux is preventing...或者 SSH 登录被拒。原因在于/etc/shadow的安全上下文也许被弄乱了。正常情况下不需要重新标记 SELinux但如果你发现重启后 SSH 连不上去、登录验证一直失败那就需要在 Grub 启动参数里临时加enforcing0或者使用以下步骤重新标记在 Grub 编辑界面找到linux16行尾添加autorelabel然后重启。系统会在下一次启动时对整个文件系统重新应用 SELinux 上下文比较耗时但能解决权限错乱问题。我个人经验是CentOS 7 里按上述标准流程操作时几乎不会触发 SELinux 问题真正容易触发的是 CentOS 6 或者手动修改/etc/shadow内容的情况。所以按流程走不要自己手动写 shadow 文件就很少踩坑。3.4 CentOS 6 老方法的兼容操作如果你的虚拟机还是 CentOS 6别紧张方法类似但有些出入。CentOS 6 的 initramfs 不会自动把根分区挂载到/sysroot所以你需要在rd.break后手动找根分区设备。一个实用方案是在 Grub 的kernel行尾加single回车启动后自动进入单用户 root shell然后直接执行mount -o remount,rw / passwd rootCentOS 6 里这个方法干净利落因为单用户模式下根分区默认也是只读所以remount,rw是关键步骤。现在还在用 CentOS 6 的虚拟机多数是历史遗留系统了但这方法百试不爽。4. Ubuntu / Debian 系列重置 root 密码的三种典型路径4.1 新版 Grub 直接进入恢复模式Ubuntu 默认没有启用 root 账号日常用 sudo 管理但如果你之前手动设置了 root 密码又忘记了或者想要重置 root 访问权限恢复模式是最直白的方式。开机进 Grub 菜单通常 Ubuntu 的 Grub 菜单默认显示三四个启动项高级选项 for Ubuntu Ubuntu如果开机直接进了系统是因为 Grub 菜单被隐藏了——开机时长按ShiftBIOS或连按EscUEFI就能调出来。选择 “高级选项”进入子菜单找到一个带(recovery mode)字样的内核项回车进入。在恢复模式菜单里选择root Drop to root shell prompt会进入一个 root shell。但注意此时根文件系统通常是只读的你需要执行mount -o remount,rw /然后直接passwd root如果你只是想设置一个 root 密码用于登录这样就可以。如果 Ubuntu 的 root 账号从来没有密码设置了密码之后下次登录界面就可以输入 root 了。如果你只是想重置普通用户密码也可以在执行完上述步骤后加一句passwd 用户名4.2 没有恢复模式时的备用方案编辑 Grub 内核参数由于某些定制系统或云镜像移除了recovery mode启动项你需要手动在 Grub 上做文章。步骤如下开机进入 Grub 菜单定位到默认 Ubuntu 启动项按e编辑。找到以linux开头的那一行在行尾加上init/bin/bash然后CtrlX启动。这个参数的意思是内核不执行 systemd直接拉起 bash 作为 1 号进程。这比单用户模式更直接但需要手动处理挂载。启动后会进入一个 bash 提示符此时根文件系统是只读的执行mount -o remount,rw / passwd root如果提示/bin/bash不存在或者出现No such file or directory说明内存盘环境缺少 bash这时可以改用init/bin/sh但操作方式相同。如果系统有 LVM 或 LUKS 加密则可能需要先执行cryptsetup luksOpen /dev/sda2 myroot vgchange -ay挂载后才能访问根分区文件系统。值得一提这个init/bin/bash方法在 CentOS 上也能用但 CentOS 的rd.break更标准建议按发行版各自习惯来。4.3 Ubuntu 的 shadow 文件锁定与过期标记一个不起眼但致命的问题Ubuntu 系统有个特殊情况root 账号可能被!符号锁定在/etc/shadow里 root 行的密码哈希前会有一个!前缀。比如root:!:18872:0:99999:7:::这个!表示密码锁定。即便你设置了新密码如果!前缀还在认证照样失败。当然用passwd root重置密码时会自动清除!前缀所以如果你是正经用passwd命令设置的一般不会遇到这个问题。但如果你手工编辑 shadow 文件敲完字符串却漏了删除!那就是白忙活。所以我的建议永远是不要手动编辑 shadow 文件能用passwd就绝不手改。另外如果系统显示密码已经过期比如提示Your password has expired那就是/etc/shadow中 root 行的99999或最后一个时间字段有问题。正常情况下passwd重置之后会刷新这些字段不必过多担心。5. 通用方案用 Live CD / 救援模式挂载磁盘修改密码5.1 判断什么场景下必须用 Live CD前面两种方法都基于 Grub 还能正常打开的情况。万一 Grub 菜单完全进不去、或者内核启动直接 panic、或者因为某些原因你没法在 Grub 参数上做手脚那就需要另谋出路——把虚拟机的启动盘换掉用 Live CD 镜像引导系统。VMware Workstation 里可以修改虚拟机设置在 CD/DVD 驱动器那一栏挂载 Ubuntu Server ISO 或 CentOS Minimal ISO并且把启动顺序设为光驱优先。这种思路类比一下系统硬盘进不去就换一个“临时操作系统”把硬盘门撬开。5.2 Live CD 挂载与 chroot 操作的详细命令以 Ubuntu Live ISO 为例虚拟机设置 → CD/DVD (SATA) → 使用 ISO 镜像文件 → 浏览选择 Ubuntu ISO。调整虚拟机 BIOS 启动顺序确保 CD-ROM 排在第一位。开机后选择 “Try or Install Ubuntu”等进入桌面或字符环境。然后找到源系统根分区sudo fdisk -l如果你用了 LVM查看逻辑卷sudo lvs挂载根分区以/dev/sda2和 LVM 逻辑卷为例实际按你机器的输出来sudo mount /dev/ubuntu-vg/ubuntu-lv /mnt sudo mount /dev/sda1 /mnt/boot sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys执行到最后还差一步chroot 前必须确保/dev、/proc、/sys都挂载好否则后续在 chroot 里执行某些命令会报诡异的错误。我见过很多人只挂载了根分区就 chroot结果没法联网也罢了连passwd都跑不起来。标准做法sudo chroot /mnt passwd root改完密码后执行umount顺序如下先退出 chroot然后umount /mnt/dev /mnt/proc /mnt/sys /mnt/boot /mnt。不按顺序卸载只会提示target is busy无伤大雅但显得不专业。5.3 LVM 与 LUKS 加密磁盘的处理要点CentOS 默认安装往往会启用 LVM。如果你用 Live CD 挂载时发现fdisk -l只看到了一个/dev/sda分区而其他空间全是空白八成就是 LVM 卷组了。先用lvs看逻辑卷名然后激活卷组sudo vgchange -ay之后再挂载/dev/mapper/cl-root或类似路径。LUKS 加密就更麻烦开机进入 Grub 时会要求输入密码才能解密磁盘你如果忘了 LUKS 密码靠 Live CD 也救不回来——因为整个磁盘内容是密文。能做的要么找备份密钥文件要么直接放弃数据。所以这里必须强调如果创建虚拟机时开了磁盘加密请一定要把加密密码单独备份到密码管理器里别和系统 root 密码放一起。6. 虚拟化平台特定技巧VMware 和 VirtualBox 的交互差异6.1 VMware Workstation 要注意鼠标捕获和按键时机VMware Workstation 里最常遇到的问题就是按键时机太晚。物理机上开机后可以狂按Shift但虚拟机如果在 VMware 窗口没有焦点键盘输入根本不会给到虚拟机。所以你需要点击窗口内部确保焦点在虚拟机里同时快速按Shift、F2或Esc。这取决于具体 BIOS/UEFI 类型。我的经验是先把焦点锁定在虚拟机然后在重启瞬间连续按Esc最容易进入 Grub。Shift反而比较容易因为时机错过。如果你看不准重启瞬间就先去虚拟机设置里把 “打开电源时进入固件” 选项勾上确认固件引导设置后再关闭此选项正常重启即可。VMware 还有一个细节如果虚拟机配置里勾选了 “启动时进入 BIOS”那你按 F2 进固件没有问题。但在调整 Grub 参数时鼠标在虚拟机里被捕获按e进入编辑模式后你会发现键盘上下左右键有时不灵。不用慌是因为小键盘锁定或光标位置不在编辑区。把鼠标移到编辑框中点击该区域再操作方向键就正常了。6.2 VirtualBox 使用过程中重置密码的差别VirtualBox 同样是虚拟机步骤基本适用于上文。一个额外注意事项VirtualBox 默认可能没有安装扩展功能鼠标切换和键盘捕捉与 VMware 略有不同但 Grub 快捷键不受影响。VirtualBox 的启动顺序在 “系统 → 启动顺序” 里调整也能临时挂载 ISO 引导 Live CD。VirtualBox 使用 UEFI 时Grub 菜单可能默认躲在一个蓝灰色的界面后面连按Esc能呼出 Boot Manager选择UEFI VBOX HARDDISK后进入 Grub。如果 Grub 菜单仍然隐藏可以在启动参数里临时通过GRUB_TIMEOUT5改成不隐藏但这需要系统正常启动后才能永久修改。6.3 从磁盘层面直接修改密码的极端办法严格说还有一个“邪道”把虚拟机的虚拟磁盘作为额外磁盘挂载到另一台 Linux 虚拟机上然后启动那个正常虚拟机直接在它里面 chroot 进去改 shadow。这个方案和老旧fdisk -lmount手法没有本质区别只是不再依赖 Live CD 镜像。好处是另一台虚拟机网络环境直接可用坏处是两台虚拟机都要求有 Linux 系统且虚拟磁盘做额外挂载时 VMware 会提示磁盘正被占用先关机后才能挂载。这套方案也适合 VMware 里不小心把系统分区改坏了但 Grub 还能进另一块硬盘的情况。不算常见但是个可选的扩展思路。7. 重置密码后的收尾工作安全加固与系统清理清单7.1 修改密码后需要同步做的事成功重置 root 密码只是第一步。系统恢复正常登录后强烈建议你按下面的清单走一遍避免留下安全隐患确认 SSH 服务正常如果之前 SSH 登录因为密码错误而频繁失败可能已被 fail2ban 之类工具临时拉黑。重置密码后用新密码测试一遍ssh登录如果被拒查一下/var/log/secure或/var/log/auth.log。检查用户授权确认/etc/sudoers中的用户列表确保没有残留陌生账号。你重置密码只是为了恢复控制权同时也要检查这台机器是否被可疑账号登录过。更新过期证书和服务密钥如果虚拟机跑着 Web 服务、数据库服务建议检查服务状态systemctl list-units --failed看有没有启动失败的服务。清理临时 shell 历史在单用户模式或者 Live CD 环境下执行过的命令会记录在内存里重启后通常没了。但如果你 chroot 后用passwd改密码shell 历史不太可能保存因为 root 用户的历史文件在 root 家目录单用户环境下不一定挂载。不过为了彻底可以执行history -c。检查 SELinux 状态CentOS 上用getenforce确认 SELinux 是否是 Enforcing。如果出现了autorelabel导致的临时关闭记得手动恢复setenforce 1。7.2 重新打开虚拟机快照以恢复“干净”起点最后再提一个容易被忽略的点。如果重置密码过程中使用了reboot -f强制重启虚拟机文件可能没有正常 flushVMware 的虚拟机日志里也许会有 Non-Persistent 磁盘的报错。建议在系统完全启动完成后再拍摄一个新的快照并删除之前那个临时快照保证后续硬盘状态是已知干净起点。不要留着暂时性的快照做长期运行否则虚拟磁盘文件越积越大性能下降明显。7.3 从“我只能进单用户模式”到“安全加固完成”的 Checklist 参考我在自己的维护工作中整理过一份小清单贴在这里供你直接抄作业检查项目命令或操作说明文件系统读写df -h确认分区挂载正常有时 remount 后只读标志未清除SSH 服务systemctl status sshd确认 22 端口正常监听SELinuxgetenforce若不是 Enforcing 且需要则设为 Enforcing登录测试ssh root127.0.0.1本地回环测试避免被防火墙干扰服务检查systemctl list-units --failed排查开机失败服务快照管理VMware 中确认无残留快照避免磁盘链过长8. 常见问题与排查技巧实录8.1 我进了恢复模式 root shell但 passwd 命令说 “cannot change password for root”这种情况多发生在 Ubuntu 或 Debian 系统的init/bin/bash启动时提示passwd: cannot change password for root: Authentication token manipulation error原因通常是/还是只读挂载。执行mount -o remount,rw /后再运行passwd即可。但还有一种较隐蔽的原因是/etc/shadow文件属性被chattr i锁定了需要先chattr -i /etc/shadow然后再执行passwd root。顺带一提如果之前为了防黑客加固过系统锁定了 shadow 文件的不可变属性那chattr这条必须先做否则无论你怎么尝试都会失败。8.2 修改完密码系统一直重启进不了登录界面排查方向主要是内核参数是否残留。rd.break如果在启动参数里没删掉系统每次开进 initramfs 都会停住等你操作。所以确认重启之前Grub 里临时添加的参数已经被忽略或者直接重启时再进 Grub 按e删除参数。VMware Workstation 里如果因为修改导致引导参数持久化那多半是grubby或grub2-mkconfig的配置被覆盖了但这类情况极少因为临时编辑启动项不会写盘。8.3 提示 “Cannot open access to console, the root account is locked”这个提示出现在 RHEL/CentOS 8 或 Ubuntu 某些版本中系统想给你一个 root shell 但 root 密码被!锁定。解决办法是通过init/bin/bash先进入 shell执行mount -o remount,rw / usermod -p root passwd rootusermod -p 会清空密码然后再设置新的。顺序别搞反放弃了旧密码直接设置新密码最保险。8.4 Grub 菜单按e后没有光标或键盘无法输入大概率是 VMware 的键盘捕获没生效。在 Grub 菜单界面按CtrlG可以释放鼠标再点进虚拟机输入。如果问题仍然存在建议在 VMware 设置里把 “主机与虚拟机共享键盘” 选项关闭有时这个功能会影响 Grub 阶段的输入。物理机场景不存在这个问题但虚拟机环境里非常常见。8.5 使用 Live CD 改密码后系统开机卡在 “Started Update UTMP about System Runlevel Changes”这通常和挂载/卸载顺序、SELinux relabel、或者 systemd 的软连接失效有关。解决策略重启时进 Grub加autorelabel让系统重新整理安全上下文再重启一次。若还卡住检查/etc/fstab是否有挂载点不想被正常挂载比如单用户模式下没有的网络设备路径。8.6 root 密码重置后旧连接仍在运行要不要全部踢出如果你通过 SSH 连接到虚拟机重置 root 密码并不会断开那些已经通过密钥或旧密码认证的会话——因为它们已经建立了。但安全角度讲你重置密码本来就是因为密码泄露或遗忘所以建议把所有其他用户的连接全部踢掉ps aux | grep sshd kill -HUP $(pgrep sshd)杀掉 sshd 主进程会导致被动断开所有 SSH 连接之后重新用新密码连。如果只是忘了密码并且只有你一个人使用这个操作不必要但如果你怀疑有别人登录这台机器那就要果断踢。9. 从“重置密码”延伸出去的完整权限控制策略9.1 定期密码轮换与双因子保护借这个机会把 root 密码的管理策略也说两句。我在实际运维中见过太多虚拟机 root 密码一用就是两三年、甚至五六年不变等到有人离职或者账号密码明文写在内部文档里泄露才想起来要处理。光会重置密码是不够的至少要建立一个基本的章程密码长度至少 16 位包含大小写和特殊字符。核心生产虚拟机不要用同一个 root 密码至少按集群区分。SSH 登录优先使用密钥认证root 直接登录改为PermitRootLogin prohibit-password。有条件的启用 Google Authenticator 做二次验证。更新完密码后尽快把密码保管在团队密码管理器里并且设置 90 天轮换提醒。9.2 Grub 密码设置防止别人直接进单用户模式前面反复强调了单用户模式可以绕过密码认证那要不要给 Grub 也加个密码如果虚拟机属于共享环境或有多位运维同事都有虚拟机控制权我建议加上。CentOS/RHEL 7 设置 Grub 密码的方式grub2-setpassword输入两次密码后会在/boot/grub2/user.cfg中写入加密内容。重启后进入 Grub 按e或按c进入命令行时候会要求输入用户名和密码。CentOS 默认用户是 root。这样就算别人能开机没 Grub 密码也改不了启动参数。Ubuntu 的类似配置是编辑/etc/grub.d/00_header或使用grub-mkpasswd-pbkdf2生成哈希后手动加进/etc/grub.d/40_custom稍麻烦点但做一次之后受益很多。9.3 无密码 sudo 与最小权限原则虚拟机的 root 密码本来就该少用。日常维护操作尽量用普通用户 sudosudo 规则只放行必要的命令。这样就算密码被泄露也只是普通用户权限不至于直接拿到整个系统。你可以把/etc/sudoers中关于 root 的默认规则保留但新创建的普通用户不要随手加进 root 组而是用visudo精确配置 alias 规则。10. 写在最后的一些个人体会把 root 密码忘掉这件事我这些年经历了好多次每次都气自己为什么没记在密码本里。但说真的掌握了这套重置方法之后心态会稳很多——毕竟只要虚拟机能开机我就有无数种方式把访问权拿回来。rd.break、init/bin/bash、Live CD 挂载 chroot这三种手法覆盖了 90% 以上的场景剩下的都是加密盘和 Grub 密码这种进阶形势。最难的部分永远是别把生产虚拟机的数据搞丢。所以如果你今天只记住一句话我希望是“动手前先打快照”如果还能记住第二句那就是“能用 passwd 就绝不手改 shadow 文件”。这两条做到重置密码就跟喝水一样平常。下一次再遇到“root 密码忘了”的事故按照这篇文章的顺序来你已经能比大多数人更冷静地进入 Grub 菜单了。
返回列表