资讯动态

麒麟系统忘记密码怎么办?GRUB单用户与LiveCD救援实操

发布时间:2026/10/17 11:39:37 来源:尧图企业网站定制
忘记密码这件事在运维现场几乎隔三差五就会遇到。前阵子接手一台麒麟系统的机器情况和大多数人一样管理员换了一茬交接时没留密码等到要做检查才发现登录界面把所有人挡在门外。麒麟系统本质上是Linux内核体系下的操作系统账号密码验证依托于PAM和shadow文件密码本身并不会被“找回”能做的其实是通过维护通道把密码重写成新值。这篇文章把我在麒麟系统上处理忘记密码问题的完整思路和操作步骤整理出来覆盖GRUB单用户模式、LiveCD外部救援、以及改密之后的收尾检查适合系统管理员、运维人员和遇到同类问题的用户参考。先声明一点如果你手里这台设备的系统盘做了全盘加密而且密钥又跟着密码一起丢了那恢复路径会完全不同下面这些操作很多会失效动工之前一定要先确认边界。1. 忘记密码后别急着动手先弄清楚密码存哪里恢复边界在哪1.1 密码不是“查回来”的重置的本质是重写认证数据很多人上来就问我“能不能把密码找回”这里需要纠正一个认知Linux系系统里密码几乎不可逆。麒麟系统的账号密码存放在/etc/shadow文件中每一行对应一个账号字段里保存的是加盐之后的哈希值。登录时系统把你敲进去的字符做同样一次哈希计算跟shadow里存的密文比对一致才能放行。整个过程由PAM模块调度涉及pam_unix.so、pam_systemd.so等一系列插件最终结果就是我不可能拿着shadow文件反推出原来的明文密码。所以“忘记密码修改”这件事技术本质只有一个——绕过登录认证进入系统维护界面然后通过passwd工具或者直接修改shadow文件把认证哈希覆盖成新密码。理解了这个逻辑后面所有操作都是围绕“如何拿到这种覆盖权限”来展开的而不是某条神秘命令能把密码找回来。这里还要提一句能执行这类重置本身需要你对设备有物理或虚拟化的管理权限。本地操作台在不在你手里、引导菜单能不能进、磁盘有没有加密这些因素共同决定了你能走哪条路径。别一上来就照着教程猛敲命令先想清楚这一步。1.2 动手前先回答这张评估清单结合我处理过的实际环境建议在任何重置操作之前先确认几个状态免得操作到一半才发现方案走不通检查项常见状态对恢复路径的影响机器形态物理机 / 虚拟机虚拟机可通过虚拟化控制台调整启动方式更灵活引导方式BIOS / UEFI是否开启Secure Boot会影响能否顺利进入GRUB修改参数GRUB是否设密码未设 / 已设已设密码时无法直接编辑引导参数磁盘是否加密无LUKS / LUKS加密加密盘在没密钥的情况下外部救援基本无效系统运行状态可停机 / 不能停影响选择在线处理还是停机恢复需要重置的账号普通业务账号 / root普通账号可由管理权限在线修改root需要恢复通道物理机注意远程管理口的访问方式虚拟机则要确认虚拟化平台允许你调整引导顺序或者临时注入启动参数。还有一个容易被忽略的点这台机器到底属于谁改动有没有走审批流程。做运维久了会明白技术方案合不合理跟管理流程合不合规是两回事该备案的备案、该记录的记录省得日后审计查起来手忙脚乱。2. 最快路径GRUB里临时改启动参数落到单用户模式改密2.1 进入GRUB编辑界面找对内核启动行单用户模式可以理解为Linux系系统的通用后门。它的原理是引导阶段只拉起最小化内核环境直接给root一个shell不启动业务服务、不加载桌面会话、不校验任何账号密码。你只要能把引导参数改掉就能绕开登录界面拿到根目录写权限。在麒麟系统上具体这样做开机时盯住屏幕看到GRUB菜单出现后马上按Shift部分UEFI机器会直接显示菜单也有机器需要按Esc。在菜单里选中你当前要用的内核项通常就是默认选中的那一个按e进入编辑模式。屏幕上会出现一段以kernel或vmlinuz开头的配置找以linux或linux16开头的那一行。把这一行的ro改成rw然后在末尾追加参数single或者直接追加init/bin/bash。按CtrlX或者键盘上的F10启动系统会落入单用户shell或直接进入bash控制台。进入shell之后不要急着改密码先执行一句mount -o remount,rw /这句命令把根分区从只读状态切到可写状态。很多人在下一步执行passwd时收到“cant open /etc/shadow”的报错原因就是根分区还挂在只读模式下不是权限问题而是根本没有写入能力。2.2 为什么有些人改了参数还是卡住单用户模式本身不难真正让新手头疼的是各种“异形状态”。我列一下实际工作中见过的情况提示cant open /etc/shadow根分区只读先执行mount -o remount,rw /或者重新执行mount /dev/你的根分区 /。落到了一个带菜单的维护界面而不是shell某些版本会先进入救援菜单让你输入root密码确认身份也有的要求按CtrlD继续启动流程然后再处理。启动参数改了但这台机器仍然进了正常桌面多半是改错了配置行。有些引导配置里有两个linux开头的行一个对应正常启动一个对应恢复内核得看当前光标实际选中哪一行。GRUB本身设了密码进入编辑时直接被要求帐号和密码不知道密码就没法继续这种情况请直接跳到第三章用LiveCD从外部处理。如果系统开启了SELinux或AppArmor可以在内核启动参数里追加enforcing0让安全模块以宽松模式加载避免某些策略把bash或passwd拦截住。单用户模式不是万能的但掌握这套组合拳可以应付大多数“只剩一台裸机、密码全失”的场景。2.3 进入shell之后按顺序做的三件事单用户shell里的事情要按顺序做不要东一榔头西一棒子执行passwd root为root设置新密码。如果忘记的是普通用户A的密码执行passwd A。执行chage -l 用户名检查这个账号的密码过期时间。有些系统的安全策略会记录“密码必须在某日期前修改”如果你改完密码但账号过期时间戳早就过了重启后依然会被登录界面拦下来要求先改密才能进桌面。确认无误后执行reboot重启或者输入exec /sbin/init让系统走一遍完整启动。这里有个容易被误导的细节你是以init/bin/bash参数进入系统的意味着某些服务并没有正常拉起systemd也没按常规流程初始化。所以别在单用户模式下纠结“为什么网络服务没起来”“为什么systemctl报错”先把密码这件事办完重启后所有服务都会由系统自动补上。3. 进不了GRUB也暂时没密码用LiveCD或救援系统从外部搞定3.1 为什么LiveCD能兜住大部分意外单用户模式有一个前提是你还得能看到并编辑GRUB菜单一旦引导程序被密码保护或者系统启动时直接崩到登录界面之外单用户模式就走不通了。这时候就得换一个思路从外部介质启动一个最小化的系统挂载原系统所在磁盘再去改里面的账号数据。LiveCD的本质是让目标机器的CPU、内存、磁盘都保持原样但它运行的是一个独立于原系统的临时环境。它不依赖目标系统里的任何密码、服务、内核模块相当于你拿着一套备用钥匙打开房门而不是在原来的锁上做文章。这套方案对麒麟系统同样适用因为底层还是Linux。准备阶段比较简单准备一个4GB以上的U盘以及一台能正常上网的电脑。下载一个Live镜像注意架构匹配。目标机器是x86就用x86版如果设备是ARM架构部分国产设备是这样的就找对应ARM版否则后面会出各种奇怪错误。用写盘工具把镜像写入U盘注意是整盘写入不是解压复制。把U盘插到目标机器开机进BIOS选择从U盘启动。如果你处理的是虚拟机直接把镜像挂载成ISO再把虚拟机的启动顺序调整为CD-ROM优先然后重新上电即可。3.2 挂载根分区然后用chroot切进原系统启动进入Live环境之后关键路径是找到原来系统的根分区挂载它再通过chroot把当前进程的根目录切换过去好像你就站在原系统内部一样。命令流程如下lsblk sudo mount /dev/sda2 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt /bin/bashlsblk用来列出所有磁盘分区你需要根据大小、文件系统类型判断哪个是根分区。判断依据常见的有ext4或xfs文件系统、容量较大、可能是/dev/sda2或/dev/nvme0n1p2这类命名。确定之后先mount到/mnt再把/dev、/proc、/sys这三个目录绑定挂载进去。进入chroot之后你当前shell看到的/就是原系统的根目录此时直接执行passwd root就能修改原系统root账号的密码跟站在原系统里执行是一模一样的效果。3.3 为什么要把/dev、/proc、/sys挂进去有人会问我只是改个密码为什么要做三个bind挂载原因在于现代Linux工具并不是孤立的passwd在运行时会调用PAM插件PAM插件可能需要访问/proc里的内核状态、/dev下的设备节点、/sys下的系统信息。如果不把这些目录挂载进去有些版本的passwd会报错或者行为异常明明shadow文件就在眼皮底下却提示权限不足、设备不存在之类的错误。当然也有绕过chroot的路子直接编辑挂载分区里的shadow文件。生成密码哈希可以用openssl passwd -6 -salt xxxx 你的新密码然后把生成的哈希字符串替换到shadow对应账号的第二个冒号字段。这招能用但有个大坑shadow文件里的每个字段都有严格含义用户名、UID、哈希、密码更改日、过期时间互相咬合只要其中一个字段格式写错这个账号就可能彻底无法登录。相比之下chroot里执行passwd一步到位由passwd工具自己处理字段格式省心太多了。对于非专业玩shadow格式的普通运维者我强烈建议走chroot别图省事。3.4 这一章最容易踩的三个坑磁盘加密未解锁时lsblk看到的分区会有LUKS标记直接mount会失败。在没有原密钥的情况下这条路基本到此为止。挂载时选错根分区。建议用lsblk查看挂载点、文件系统类型同时用blkid看UUID确认避免把boot分区或者其他数据盘当成根分区。chroot后提示/bin/bash找不到绝大多数情况是架构不匹配。你用x86的Live盘去救ARM机器或反过来都会出现这种问题重新下载匹配架构的镜像就好。LiveCD方案虽然操作步骤多一些却是最稳的外部兜底手段。只要硬件没坏、磁盘没加密它几乎能覆盖所有引导层面的故障。4. 密码改完了不等于流程走完了过期策略、家目录和数据一致性都要查4.1 用chage确认密码有效期防止改完仍然登不进去我处理过一起案例明明在单用户模式下重置成功重启后登录界面却提示“密码已过期必须修改”。乍一看以为是重置失败查了shadow才发现是那个账号的过期时间戳早就过了系统按策略强制要求改密。这说明重置密码之后还有一个容易被忽略的动作检查密码策略。推荐的操作是进入shell后执行chage -l 用户名查看Last password change和Password expires两栏。如果系统需要长期保持免打扰可以执行chage -M 99999 用户名把最长使用期限放宽。如果这台机器有明确的企业安全策略就别乱改按策略要求设置合规密码然后把过期提醒周期设置好。尤其是root账号和运维专用账号我一般都会在重置后顺手加一条chage -M 99999避免几个月后又一次被“密码过期”拦在门外。这属于很小的操作但能省掉很多不必要的工单。4.2 家目录是否加密决定了“用户数据会不会消失”这是比忘记密码更深的坑。麒麟系统的安装向导里可能会提供家目录加密选项如果当初安装时选择了加密家目录那么用户数据是由一个基于用户密码派生的密钥来保护的。重置密码后新密码派生出的密钥跟旧密码对应不上结果是能正常登录但打开家目录看到的是一堆乱码数据或者空目录原来的文件就像消失了。怎么避免这种局面在重置前检查/etc/crypttab看看有没有家目录加密相关条目。查看/home下是否有加密容器文件这些文件通常有.Private或者用户目录下有.ecryptfs之类的隐藏目录。如果确认加密了家目录优先尝试回忆旧密码或寻找系统安装时生成的恢复口令。企业环境里先找负责信息安全的人确认有没有密钥备份再动手。我个人的建议是对所有重要机器在购入和初始化时就把家目录加密开关评估清楚不要为了“数据安全”盲目开启开了就得同时设计密钥恢复机制否则哪天密码丢了数据比系统更脆弱。4.3 记住你动过的地方回头做审计和一致性修复单用户模式和LiveCD操作在系统层面是合法的但不等于没有痕迹。系统的/var/log/auth.log、/var/log/secure以及journald服务会记录下登录和认证相关事件企业环境下这份记录就是审计依据动手前最好心里有个底。另外如果重置过程中你手动编辑过/etc/shadow或/etc/passwd建议在一切结束后跑一次文件一致性检查pwckpwck会对照passwd与shadow文件报告账号缺失、字段异常、UID冲突等问题运行一遍不到一分钟但能让你确认写完的账号数据没有破坏原有结构。我每次处理完这类操作都会顺手跑一遍时间和成本几乎可以忽略。5. 密码这个东西靠“记得住”不如靠“管理好”预防性和人事层面的建议5.1 运维账号分级别让所有风险集中在一个密码上真正做得好的运维环境不会把root密码作为日常登录密码。建议是创建带sudo权限的维护账号日常管理用维护账号root密码作为应急凭证单独存放在受控的密码保险箱或密码管理器里。这样即使业务账号密码被遗忘管理员在线执行一句sudo passwd 普通用户名就能解决根本不需要重启系统走进恢复流程。这个思路的本质是把“忘记密码”的影响面缩小。忘记一个普通账号密码恢复成本是分钟级的忘记root密码恢复成本就是停机级别的。把风险分级比在同一个层级上准备更多恢复技巧有效得多。5.2 SSH密钥登录是低调但好用的救命通道不仅是麒麟系统任何Linux服务器都建议配置SSH密钥认证。配置完成之后就算所有密码都丢了只要这台机器还能通过网络访问、sshd服务还在跑你就能用私钥登录进去然后在在线状态下用sudo或直接root改掉任意账号密码。大致配置步骤是这样在本地电脑执行ssh-keygen -t ed25519生成一对密钥。把公钥追加到目标机器家目录的~/.ssh/authorized_keys文件里。确认/etc/ssh/sshd_config里PubkeyAuthentication yes没有被注释。root用户的密钥登录建议保留但限制来源IP不要全网可达。密钥登录还有一个隐藏优点审计友好。每条登录记录都带着确定的密钥指纹比密码登录更容易追查来源。很多运维团队现在都默认“密码只做应急日常全走密钥”这是很值得参考的做法。5.3 人事交接和密码台账比任何技术方案都省事说到底不少“忘记密码”的求助根本不是技术故障而是信息交接问题。同事离职、设备移交、供应商部署完只留下默认账号这些信息没被记录下来过半年就变成了需要全套恢复流程的“事故”。建议组织内部维护一张简单的密码台账记录设备序列号、主机名、网段、系统版本、主要账号、密码重置日期、保管人、交接备注。它可以是一个受控的电子表格也可以是一个密码管理器条目不一定多高级但一定要有更新机制。对人、设备、密码三者做绑定员工变动时及时变更记录就能避免大多数“莫名其妙忘记了”的场景。我在实际处理中还有一个经验一台系统如果连续发生过两次密码相关的紧急恢复流程那一定是管理问题大于技术问题。这时候把流程补起来比多学几招恢复技巧价值更大毕竟消除隐患永远比反复修复更有意义。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑