银河麒麟V10忘记root密码?单用户模式+GRUB修改实战重置
2026/9/7 23:18:18 网站建设 项目流程

简介:针对银河麒麟桌面操作系统V10(sp1)忘记用户密码的常见故障,这份PDF手册给出了基于单用户模式的密码重置完整流程,同时适用于X86与ARM架构。内容以“kylin”用户为例,详细演示了从开机进入GRUB界面、按“e”编辑启动项,到在linux结尾行添加init=/bin/bash console=tty0参数,再通过Ctrl+X或F10进入单用户模式,之后执行passwd命令设置新密码,最后使用reboot -f或Ctrl+Alt+Delete强制重启生效的全过程。整份操作手册仅4页,却完整覆盖从引导编辑、单用户进入、密码修改到强制重启的闭环,步骤间配有屏幕示意与注释,特别针对黑屏等待、参数位置等易错点做了提醒,便于读者按图操作。资源为单个PDF文件,体积仅327KB,下载后可随时翻阅。当前已有1007人学习,适合系统管理员、运维人员以及普通用户日常应急参考,也可作为学习GRUB维护与Linux密码管理的基础材料。 机器还在正常跑,但没人记得root密码——这种场面,做过系统运维或IT支持的应该都不陌生。我前不久就在一台银河麒麟桌面V10(sp1)上碰到了同样的事:业务没停,问题是要临时装个内核模块,必须用管理员身份执行,结果几个人翻遍了交接记录,也没找到能用的口令。当时没走重装系统那条路,而是重启、进入单用户模式、用passwd命令重置密码、再正常重启验证,整套流程下来也就十多分钟。这篇文章把这次实操完整拆开,从GRUB启动参数怎么改、单用户环境怎么进,到passwd各个参数怎么用、重启后要验证哪些项,一步步讲清楚,最后再把那些容易翻车的细节单独拿出来说。

单用户模式一直是Linux维护场景里的“压箱底工具”,名字听着神秘,本质上是系统启动早期的一个最小化运行环境。此时网络服务、图形界面、各类业务进程都没有起来,系统只保留最基本的内核运行和文件系统访问,并直接向操作者提供一个root权限的shell。正因为这个机制,忘记密码才不需要走到重装系统的绝路上。这篇内容适合三类人看:公司里负责麒麟桌面系统日常维护的IT同事,自己在物理机上装了银河麒麟想搞清楚密码恢复机制的用户,以及想弄明白这套引导流程原理的Linux爱好者。无论你属于哪一类,按顺序操作都能复现,但前提是你得能实际触达这台机器——不管是坐在它面前,还是通过带外管理口。

1. 为什么密码恢复要选单用户模式:适用边界与前置条件

1.1 “密码失联”的典型场景和方案取舍

密码丢失从来不是某一个固定时间点的故障,它往往出现在最不该出错的时刻。我遇到过的场景大概有三类:一种是长期使用图形界面登录,普通用户密码记得很清楚,但root密码太久没用,已经彻底模糊;第二种是运维交接时口令台账遗失,负责的人走了,密码也跟着“失联”;第三种是自己改了密码后没有同步记录,过了几周再登录,怎么输都不对。

遇到这类问题,能走的路线其实不止一条。Live CD启动后chroot进原系统、挂载系统盘后离线修改shadow文件、单用户模式重置、重装系统,这些都是可选方案。重装系统代价最高,应用配置、用户数据、软件环境全部推倒重来,对一台跑着业务的机器来说基本不可接受。Live CD和挂盘修改对个人电脑可行,但服务器往往有阵列卡或加密盘,临时找外部介质引导存在驱动和兼容性问题,反而拖慢节奏。相比之下,单用户模式不需要额外介质、不需要拆机、不依赖网络,直接在引导阶段切入,是所有方案里最顺的一条路。

1.2 动手前必须确认的几件事

操作本身并不难,但事先确认环境能省掉很多后知后觉的麻烦。以下是我每次动手前都会过的清单,建议你也养成这个习惯。

第一,确认自己能否触达物理控制台。单用户模式的操作依赖于本地键盘和显示器,远程SSH工具在这个阶段不适用。如果是远程机房里的机器,你需要通过IPMI、iDRAC、iLO这类带外管理口先拿到虚拟控制台,否则后面所有步骤都无从谈起。

第二,确认启动方式。银河麒麟桌面V10(sp1)支持Legacy BIOS和UEFI两种固件引导方式,调出GRUB菜单的操作细节略有差异,但只要知道该按什么键、编辑哪一行,两种方式都能搞定。

第三,确认没有未落盘的紧急数据。重启会强制中断当前运行状态,虽然正常情况下不会损坏系统,但如果有应用正在写数据、数据库正在提交事务,硬重启总归有一定风险。在能停服的前提下,先走正常关机流程再开机,而不是直接按复位键。

第四,心里要有备份意识。如果系统里存在无法重建的关键数据,操作前用快照或克隆盘做一次备份,毕竟重置密码涉及根文件系统的写入,稳妥一点总没错。

1.3 单用户模式能绕过密码的底层原理

很多人好奇为什么启动参数改一下就能绕过登录验证。要理解这点,得先分清“内核启动阶段”和“操作系统启动阶段”的区别。内核被引导加载器拉起之后,会执行第一个用户态程序init,这个程序负责挂载根文件系统、启动systemd服务、拉起登录管理器,最终呈现给用户的是一套完整的多用户环境。而我们输入密码登录,发生在登录管理器或者是SSH服务这一层。

单用户模式的核心,就是告诉内核“你不需要跑完整的init流程,直接给我一个shell”。正常情况下这个shell需要root身份验证,但在单用户场景下,由于系统尚未完成完整的用户态初始化,身份验证服务也没有加载,内核就直接把操作者当成root丢进了shell。所以密码验证在这个阶段不是被“绕过”,而是根本没有常驻的认证流程可走。理解了这一点,你就能明白为什么只要你能编辑内核启动参数,就基本能拿到系统的操作权。

2. 进入单用户模式:GRUB引导菜单修改的两条路径

2.1 调出GRUB菜单并定位内核启动参数

整个流程最关键的入口,就是让系统停到GRUB菜单等待你的指令。银河麒麟桌面V10(sp1)默认使用GRUB2引导,在开机自检完成后、系统加载内核前,屏幕上会有一小段菜单显示时间。常见做法是开机后立刻连续按Esc键或Shift键,不同固件下响应键位略有差异,多按几次总能抓到菜单。

如果菜单一闪而过,或者压根没出现,多半是超时时间设置得太短。这时候不用慌,等待系统完全启动后再执行一次reboot,在第二次重启时更早、更频繁地按键即可。个别机器如果开启了UEFI的快速启动或Windows双系统引导,BIOS层面会跳过部分启动项展示,可能需要在固件设置里临时关闭快速启动,这个视具体情况调整。

看到GRUB菜单后,选择默认的内核启动项,通常是一行带有“银河麒麟”字样的条目。此时先不要急着回车,直接按下字母e进入编辑模式。GRUB会展开一份启动配置文件,包含set rootlinuxinitrd等若干行。我们真正要改的是以linux开头的这一行,它后面跟的是vmlinuz内核路径和一系列启动参数,类似linux /boot/vmlinuz-4.19.90-... root=UUID=... ro quiet splash

2.2 路径一:在内核参数末尾追加single

Linux的传统方式是在内核参数后面追加一个single,告诉内核以单用户模式启动。操作时,用方向键把光标移动到linux那一行的行尾,先敲一个空格,再输入single,然后按Ctrl+XF10启动。

追加了single之后,系统仍然会走init流程,但不会启动多用户运行级别,也不会启动网络和图形界面。systemd会把系统带到一个维护shell里,这个shell通常以root身份运行,可以直接执行passwd命令。

这条路径在大多数发行版上表现稳定,但也有一个变数:如果系统预先配置了启动时校验root密码,那么在进入单用户shell之前,可能还是会弹出一个密码提示。如果出现这种情况,不要硬试密码,直接看下面的第二种路径,它更直接。

2.3 路径二:改用init=/bin/bash直接进入Shell

相比single,我更推荐在密码遗忘场景下使用init=/bin/bash。这个参数的意思是:不要执行原生的init程序,而是让内核直接拉起一个/bin/bash作为第一个用户态进程。好处是跳过了init和systemd的整体初始化,基本不会触发任何认证组件的加载,也不存在“单用户模式还要密码”的尴尬。

具体操作同样是进入GRUB编辑界面,在linux那一行的行尾追加init=/bin/bash。部分机器为了保证根文件系统能正常写入,还会顺手把参数里的ro改成rw,避免进入shell后根分区仍是只读状态。如果没有改,也可以进入shell后再手动重新挂载,这块我在第5章会单独讲。

保存修改后按Ctrl+X启动,屏幕会快速滚动几行启动日志,最后停在一个以#结尾的命令提示符前,这就说明你已经进入了bash环境。到这里,密码重置的前置条件已经全部就位,接下来就是passwd命令的主场。

3. passwd命令实战:重置root与普通用户密码

3.1 重置root密码的操作顺序

进入bash环境后,第一条命令我建议先确认一下当前身份和根文件系统的挂载状态。执行whoami应当返回root,执行mount | grep ' / '则能看到根分区的挂载属性。如果显示ro,需要先执行mount -o remount,rw /,把根文件系统切换为可写,这一步直接决定后面passwd能不能成功。很多人在这个环境里执行passwd报错,九成都是因为忘了先重新挂载。

确认可写后,执行passwd root,终端会提示输入两次新密码。这里要特别提醒:终端不会显示你输入的字符,属于正常现象,不要以为是键盘失灵。两次输入一致后,passwd会更新/etc/shadow文件中root对应的密码哈希,同时显示一行类似“passwd: password updated successfully”的提示。

有些系统出于安全策略配置了PAM的复杂度校验,如果密码设置得过于简单,passwd会拒绝执行并提示原因。建议至少使用12位以上、包含大小写字母数字和符号的强口令。另外,root密码设置的时候务必考虑后续的业务使用场景,别设置一个复杂到连自己都记不住的口令,那样你又得回来重走一遍这条路。

3.2 修改普通用户密码和其他实用参数

重置root只是其中一个需求,实际运维中还经常遇到普通用户的密码过期或遗忘。在单用户shell里,修改普通用户的密码同样是passwd 用户名,命令会自动同步修改该用户在shadow文件中的条目。例如passwd zhangsan会为zhangsan设置新密码。

passwd命令的参数相当实用,我挑几个高频场景展开。passwd -l 用户名可以快速锁定账户,被锁定用户无法登录,但密码本身不会被清空;passwd -u 用户名是解锁操作,会把账户恢复到可登录状态;passwd -e 用户名则强制要求该用户下次登录时修改密码,适合用来做周期性口令更新的辅助。配合chage -M 90 用户名这类老化设置,可以约束一个密码最多使用90天。

如果你想检查一个账户当前的状态,可以用passwd -S 用户名,它返回的内容包含账户是否锁定、密码是否已设置、以及距离密码过期的天数等信息。在线下维护的场合,这些命令的价值主要体现在不用反复重启系统就能完成账户的批量管理和初始化工。

3.3 passwd执行失败的排查思路

操作途中如果遇到报错,先别急着怀疑系统坏了,绝大多数情况指向三类问题。

第一类是文件系统只读。前面反复强调过的场景,进入shell后如果没执行重新挂载,passwd会提示无法操作密码文件,错误信息通常含有Authentication token manipulation errorcannot lock /etc/shadow。处理方式就是执行mount -o remount,rw /然后重试。

第二类是SELinux或AppArmor等安全组件导致的权限异常。银河麒麟桌面版本对安全模块有不同程度的集成,如果passwd提示权限不足但文件系统已经是可写状态,可以检查一下相关文件的安全上下文是否正常,或者临时查看ls -Z /etc/shadow确认SELinux标签没有被重置破坏。在紧急恢复的场景下,这一步通常不会遇到,但遇到过就知道坑在哪。

第三类是用户信息不存在或用户处于锁定状态。passwd 用户名如果提示用户不存在,先执行cat /etc/passwd | grep 用户名确认该账户是否真实存在;如果账户存在但无法登录,查看passwd -S 用户名的状态位,必要时先用-u解锁再设置密码。

4. 重启验证与系统恢复后的检查清单

4.1 从单用户环境安全退出并引导系统

密码设置完成后,不要直接拔电源或按复位键,先让文件系统同步落盘。在bash环境下执行sync,它会强制把缓存中的数据写入磁盘,避免密码修改结果还没真正持久化就被打断。然后执行exit退出shell,系统会尝试继续启动流程。

如果机器没有自动进入正常系统,可以执行reboot -f强制重启。之所以要在reboot前先做sync,是因为强制重启不会像正常关机那样先同步文件系统,数据丢失和文件系统损坏的风险客观存在,先sync一下相当于补一层保险。对现场维护来说,节奏可以稍微从容一点,该同步的就同步,不差这几秒。

重启后如果GRUB菜单再次出现,直接选择正常的内核启动项进入系统。这次不再做任何参数修改,让它走完整的init流程,最终会看到登录管理器或图形登录界面。

4.2 重启后需要验证的项目

实测中,登录能成功不代表一切正常,我习惯在重启后按顺序检查几项,你能避免“密码对了但服务挂了”的隐性故障。

第一,用刚设置的root密码在本地终端登录,确认登录成功。如果是桌面版本,可以再验证图形登录界面能正常进入桌面环境,因为有些密码策略和桌面认证模块之间兼容性并不总是完美。登录后顺手执行idsudo -i,确认当前确实有root权限,而不是仅仅登录了一个普通会话。

第二,检查关键服务是否恢复到正常启动状态。执行systemctl statussystemctl list-units --state=failed,重点看有没有启动失败的服务。单用户模式虽然不加载多用户服务,但重启后正常的systemd流程会把这些服务拉起,如果存在依赖顺序问题,可能在这一步暴露。

第三,查看当天的系统日志,确认重启过程中没有磁盘挂载错误。执行journalctl --since today | grep -i error或直接tail -50 /var/log/messages,如果出现和根分区、swap分区相关的报错,需要进一步排查,避免问题累积到下次重启。

第四,确认新密码已经同步到所有需要认证的场景。比如桌面屏幕锁、应用代理登录、sudo密码等是否都能用新密码,因为在部分桌面环境下,密码更新后需要在钥匙串管理里重新输入一次,否则个别应用会一直报认证失败。

5. 容易翻车的细节与安全提醒

5.1 只读根文件系统:最经典的一个坑

单用户模式下文件系统可能是只读状态,这个细节我每次都要单独拎出来讲,因为它实在太隐蔽了。进入bash环境后,提示符看起来一切正常,你甚至可以执行lscat这些不写入的操作,但如果直接跑passwd,就会卡在密码文件那里动不了。

本质上,这是因为内核在启动时按ro参数挂载了根文件系统,而我们没有重新挂载成可写。单用户模式并没有自动处理这一步,它只是给了你一个操作入口。遇到这个情况,先执行mount -o remount,rw /,再继续后续操作。有些版本的引导配置里还有staged之类的选项,但那不是我们讨论的范围,记住remount, rw这一条就够了。

另外,passwd写回shadow文件后也别急着走,建议顺手执行一次cat /etc/shadow | grep root看一眼root那一行的结构是否正常。正常的话会看到root:$6$......这样的格式,$6$代表sha512加密算法,如果看到其他奇怪的符号或空字段,说明密码设置大概率没成功。

5.2 物理安全和引导保护:把入口也管起来

能通过单用户模式重置密码,本质上意味着任何能接触到机器控制台的人都有机会拿到root权限。这一点是双刃剑:它帮你在密码失联时恢复系统,同时也意味着机器必须规范部署在对物理访问有控制的区域。如果一台服务器随便放在开放的办公区,那这个入口就等于向所有路过的人敞开。

在操作系统安全层面,建议给GRUB本身加上密码保护。设置方法通常是执行grub2-setpassword,它会要求录入一个GRUB用户名和密码,后续在编辑启动参数前必须通过这个认证。这样即使别人能碰到键盘,也无法随意往内核参数里追加singleinit=/bin/bash。配合固件层的开机密码,可以形成一道基础的物理防线。

同时,看门狗式的防护也很关键:不要把生产环境的root密码长期只存在某一个人脑子里,或者只写在某个纸质台账里。口令应该是封存在多人可取的安全保险库中,每次使用都有变更记录。这不只是怕忘记,更多是防止当某个人离开公司后,某个系统的钥匙也一起“消失”。

5.3 更规范的替代方案与事后管理

单用户模式改密码本质上属于应急手段,它解决的是“现在就能进去”的问题,解决不了“密码管理混乱”的根源。如果在实际工作中频繁走到这一步,就说明该考虑更规范的账户管理体系了。

比较常见的做法是把终端机器的认证统一收到集中认证域,比如LDAP或AD域。这样一来,管理员密码不落本地,用户密码有统一的密码策略约束和轮换周期,本地root只作紧急维护通道。对银河麒麟桌面V10(sp1)来说,它本身就支持对接域环境,很多单位在批量部署时也会做这个动作。

其次就是备份策略。越是在关键场景,备份越不能省。即使不做全盘快照,至少定期备份/etc/passwd/etc/shadow/etc/group这些核心账户文件和关键应用配置。在需要恢复的紧急关头,拥有一份最近的配置备份,比什么都管用。

最后说一点个人经验:每次做完这类密码恢复操作,我都会顺手在维护记录里补一行,写明“什么时间、在哪台机器、基于什么原因、修改了哪个用户的口令、操作人是谁”。乍看有点多此一举,但几个月后当有人问起“这个root密码到底是谁改的”,你能拿出记录,比一脸茫然要强得多。密码这类东西,最难的不是改,而是改完之后还能持续管得住。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询