简介:针对银河麒麟V10桌面操作系统用户忘记登录密码的场景,这份PDF简明梳理了进入单用户模式重置密码的完整方法,适合系统管理员、运维人员及Linux初学者参考操作。资源为单个PDF文档,大小442KB,内容聚焦单用户模式下的关键步骤,包括引导界面按e进入编辑、追加“init=/bin/bash console=tty0”参数、通过Ctrl+x或F10引导进入系统,以及使用passwd命令修改指定用户或root密码的具体写法。同时提醒读者在最高权限模式下谨慎操作、提前备份数据,并在修改完成后用reboot -f重启使配置生效,兼顾操作细节与安全注意事项。目前已有9254人学习,对需要快速解决密码遗忘问题的银河麒麟用户具有较强的实用价值。 做运维这些年,最怕的不是系统崩了,而是root密码忘了。尤其是国产化替代推进之后,手边一堆银河麒麟V10桌面版的机器,密码忘了不能像以前那样随手重装——里面可能有验收材料、有业务系统、有用户数据。今天我把在银河麒麟V10桌面版上通过单用户模式重置密码的完整过程写出来,包括原理、操作、还有我踩过的几个坑,希望能帮到正被这事卡住的兄弟。
1. 忘了密码别急着重装:单用户模式到底能做什么
先说结论:银河麒麟V10桌面版(基于Linux内核,Kylin Desktop V10)跟其他主流Linux发行版一样,保留了单用户模式这个“后门”。在这个模式下,系统不会拉起完整的图形桌面和各类服务,而是直接给你一个root权限的shell。你没有密码也能进去,进去之后想改密码、改配置、修引导,都是顺手的事。
很多人一听到“单用户模式”就觉得很高深,其实理解起来很简单。正常开机时,内核启动后会启动systemd(或init),然后systemd根据运行级别拉起一堆服务:显示管理器、网络服务、数据库、中间件……这些都是我们要登录之后才能正常使用的。而单用户模式,相当于你告诉内核:先别折腾那些花里胡哨的,给我一个最精简的环境,让我以管理员身份进去处理问题。它本质上就是运行级别1(runlevel 1),在RHEL/CentOS系的系统里也叫rescue.target。
单用户模式能干的活不少,除了改密码,还能修fstab挂载错误、修复引导、排查启动卡死的服务、删除忘了密码的加密目录等等。但最常用的场景只有一个:root密码忘了或者过期了。所以这篇文章我就专注讲清楚密码重置这一件事,把细节抠透。
这里必须提醒一句:单用户模式虽然方便,但它也意味着任何能物理接触到这台机器的人都能拿到root权限。所以在企业环境里,机箱锁、BIOS密码、硬盘加密(LUKS)是不可省略的三道防线。后面我会专门讲这个。
2. 开机抢时间:在GRUB引导菜单截停系统
整个操作的第一步,是在开机时进入GRUB引导菜单。这一步看似简单,但恰恰是很多新手翻车的地方。
2.1 重启并找到GRUB界面
先把电脑重启。如果机器已经关机,直接开机。在开机自检(BIOS/UEFI画面)过去之后,屏幕上出现GRUB引导菜单之前,你需要快速按下键盘上的E键(有些机器是Esc或者Shift,但银河麒麟V10桌面版基本默认走GRUB,按E就行)。
这里有个容易忽略的细节:银河麒麟桌面版的GRUB菜单默认显示时间很短,而且开机画面可能直接是品牌Logo,把底层的GRUB菜单文字给挡住了。我遇到过好几台机器,开机直接跳Logo,等你想起来按按键已经晚了。解决办法有两个:一是在开机瞬间就不停地连按Shift或Esc把GRUB菜单先调出来;二是先进入系统修改GRUB超时时间(后面会讲)。
如果按E成功,你会进入一个文本编辑界面,里面是GRUB配置脚本,看起来像这样:
load_video set gfxpayload=keep insmod gzio ... menuentry 'Kylin V10 Desktop' --class kylin ...不用被这些内容吓到,我们只需要找到一行以linux开头的那条。在银河麒麟V10上,这一行通常是:
linux /vmlinuz-xxx root=/dev/mapper/klas-root ro quiet splash也可能是UUID方式指定根分区:
linux /vmlinuz-xxx root=UUID=xxxxx ro quiet splash无论哪种写法,核心关键词是ro和quiet splash。我们要改的就是这一行。
2.2 编辑GRUB时的小技巧
在GRUB编辑界面里,光标移动不像图形界面那么顺手。这里有几个实用技巧:
- 按
Ctrl+E跳到行尾,Ctrl+A跳到行首(比一直按方向键快得多); - 用方向键左右移动光标到指定位置;
- 改错了想撤销,按
Ctrl+X是启动(别乱按),按Esc是返回上一层。
有一次我在客户那边操作,手一抖按了Ctrl+X,系统直接带着没改完的参数启动了,结果卡在挂载根文件系统的步骤上,场面一度很尴尬。所以提醒各位:编辑过程中手指离Ctrl+X远一点,那是确认启动的快捷键,不是保存的意思。
3. 改内核启动参数:把系统“降级”成管理员终端
这一步是整个方案的核心,也是理解单用户模式原理的关键。
3.1 ro改成rw:为什么要这么干
找到linux开头的那一行后,先把ro改成rw。举个例子,原本是:
linux /vmlinuz-xxx root=/dev/mapper/klas-root ro quiet splash改成:
linux /vmlinuz-xxx root=/dev/mapper/klas-root rw quiet splashro表示read-only,内核在启动阶段以只读方式挂载根分区;rw就是read-write,以读写方式挂载。
为什么要改这个?因为在单用户模式下,系统不会像正常启动那样重新挂载文件系统。如果根分区是只读的,你随后执行passwd root、写入配置文件这些操作就会直接报“只读文件系统”的错误。提前改成rw,等于告诉内核:把根分区以读写方式挂载好,省得我们进系统后还要手动mount -o remount,rw /。
有些教程会让你保持ro不动,进系统后再执行:
mount -o remount,rw /这个操作本身没问题,但既然我们改一次内核参数就能解决,何必多敲一条命令?直接在GRUB里改成rw是最省事的路径。唯一要注意的是:确保你要改的是根分区所在的那一行,别把其他linux行给改了(多系统引导时容易犯这个错)。
3.2 行尾追加 init=/bin/bash
在linux那一行的最末尾,追加一段参数:
init=/bin/bash追加完之后,整行看起来是这样:
linux /vmlinuz-xxx root=/dev/mapper/klas-root rw quiet splash init=/bin/bash解释一下这行的意思:init=/bin/bash会让内核在挂载根文件系统后,不启动完整的systemd服务,而是直接把控制权交给/bin/bash。这样系统起来之后,你面对的就是一个root身份的shell,不要求输入密码。
这里多提一句,有的系统上也可以用rd.break参数进入dracut紧急shell,或者用systemd.unit=rescue.target进入救援模式。但在银河麒麟V10桌面版上,init=/bin/bash是最直接、最少依赖的方案,尤其在图形界面起不来的场景下最好用。
3.3 启动并判断是否成功
参数改完后,按Ctrl+X或者F10启动。屏幕上会滚动一堆内核日志,最后停留在类似这样的提示符:
bash-4.2#或者:
sh-4.4#看到#号,并且前面没有带普通用户名,说明你已经有了root权限。到这里,最难的部分已经过了。
我自己第一次操作的时候,看到bash-4.2#这个提示符还愣了一下,因为和平时登录系统的用户名@主机名不一样。实际上这个是正常的,因为单用户模式不会加载主机名配置,直接就是最朴素的bash。放轻松,往下走。
4. 执行密码重置与SELinux陷阱
进入root shell之后,改密码本身很简单,但有几个隐藏的坑会让人摔跟头。
4.1 改密码的标准操作
先确认根文件系统挂载状态:
mount | grep " / "如果你想确认当前是不是读写状态,可以看输出里有没有rw。如果因为某些原因还是只读,就执行:
mount -o remount,rw /然后直接改密码:
passwd root系统会提示输入两次新密码。这里要注意:输入密码时屏幕不会显示任何字符,连星号都没有。很多新手以为键盘坏了或者系统卡了,其实只是在正常等待输入。输完直接回车,再输一遍,看到passwd: all authentication tokens updated successfully就说明成功了。
如果只是普通用户忘了密码,也可以在这里一起改:
passwd 用户名比如给用户zhangsan重置密码:
passwd zhangsan4.2 SELinux的坑:为什么建议执行touch /.autorelabel
这是银河麒麟V10上最容易踩的坑,也是一堆教程里语焉不详的地方。
在进入单用户模式改完密码直接重启后,部分机器会卡在登录界面,或者登录后各种异常。根因出在SELinux的文件标签上:我们用init=/bin/bash这种方式启动时,很多需要由systemd正常初始化时设置的SELinux安全上下文(security context)没有被正确设置。密码文件/etc/shadow如果打了错误的标签,重启后SELinux会拒绝相关进程访问,结果就是密码明明对了也登不进去。
规避方法很简单,在改完密码后,执行:
touch /.autorelabel这个命令的作用是创建一个标记文件,系统下次启动时会扫描整个文件系统并自动重建SELinux标签,相当于给所有文件重新贴一遍“权限标签”。整个重打标签的过程可能持续几分钟到十几分钟不等,取决于磁盘大小和文件数量,重启的时候屏幕上会刷一堆*** Warning *** SELinux is relabeling...之类的内容,属正常现象,等它自己完成就行。
不过也要说句公道话:银河麒麟V10桌面版默认的SELinux策略并不一定都是Enforcing模式。在某些版本上,SELinux默认是Disabled,那你不执行touch /.autorelabel也没事。但问题是,你无法百分百确定自己手头这台机器的SELinux状态,尤其是客户机器可能被人改过/etc/selinux/config。所以我的习惯是:不管怎么样,先 touch 一下,多花几分钟图个稳。
如果你确定不想让系统下次启动时花时间做全盘重打标签,也可以手动改密码文件标签:
restorecon /etc/shadow效果一样,但更快。
4.3 修改SELinux策略的另一种思路
如果你发现系统SELinux确实是Enforcing,但又不想忍受全盘relabel的时间成本,可以这样操作:在单用户模式下直接修改SELinux配置文件:
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config然后重启,SELinux就全局禁用了。但这属于改变系统整体安全策略的操作,在企业环境里需要谨慎评估。我个人的建议是:除非你有明确的安全合规调整需求,否则别为了省几分钟去动SELinux的状态,老老实实relabel才是正道。
4.4 安全重启:别直接断电
改完密码、处理完SELinux之后,需要重启系统。在单用户模式下,直接执行reboot有时候会因为服务没起来而卡住,更稳妥的方式是:
exec /sbin/init这个命令会重新拉起systemd(init进程),让系统以正常流程继续完成启动,通常能平滑进入多用户模式。或者你也可以先执行:
sync把缓存写入磁盘,再执行:
exec /sbin/init如果执行exec /sbin/init后没反应,可以试试:
reboot -f强制重启。但记住,不要直接按电源键断电,除非前面的方法全部失效。
5. 重启后的验证与常见翻车现场
系统起来后,先用新密码登录试试。如果一切正常,这篇教程的任务就算完成了。但我不止一次遇到过程序上没问题、结果却被奇怪细节绊倒的情况,下面这几个坑几乎每个人都会碰到,提前打好预防针。
5.1 密码强度策略:为什么你设的密码不通过
银河麒麟V10默认带了一套密码复杂度策略,要求密码通常必须包含大小写字母、数字、特殊字符中的至少三类,且长度不少于8位(具体策略可以在/etc/security/pwquality.conf里调)。在单用户模式下,passwd命令同样会强制执行这套策略。
有一次我在现场给客户改密码,随手设了个Kylin@123,系统直接报错,提示密码太简单。后来我才反应过来,V10的默认策略比CentOS 7要严格不少。给大家两个实用建议:
- 设密码前先想好一个满足复杂度的组合,比如
Kylin2024#Root这类; - 如果确实需要简单密码(比如测试环境),可以先用单用户模式修改
/etc/security/pwquality.conf里的相关参数,再执行passwd。
5.2 键盘布局导致登录失败
这也是真实发生过的案例。单用户模式下,系统可能没有加载你平时使用的键盘布局,而是默认的US布局。如果你原来的密码里带有中文输入法下输入的字符,或者依赖特定键位(比如@在US布局下是Shift+2,在欧式布局下可能在其他位置),那你在单用户模式里设密码时可能跟预期不一致。
解决方案很简单:设密码时尽量用纯英文、数字和常见符号,别用那些特殊布局下会漂移的字符。如果不小心踩了这个坑,回到单用户模式重新设置一次就行,不用慌。
5.3 密码过期与账户锁定
除了忘记密码本身,还有一种情况:密码过期了。如果你的系统配置了密码周期策略(/etc/login.defs里的PASS_MAX_DAYS),用户密码到期后,图形界面会提示修改密码,但如果用户长期不登录,也可能出现“账户已锁定”的情况。
在单用户模式下可以直接清除密码过期限制:
chage -M 99999 用户名或者直接查看账户状态:
chage -l 用户名如果密码已经锁定,使用passwd -u 用户名解锁。这些操作顺手就做了,别等重启后登录又失败,再回来折腾一趟。
5.4 修改后的系统安全检查
密码重置完成、能正常登录之后,最好花两分钟检查一下系统里有没有异常账户或可疑活动。毕竟你走了一遍后门流程,如果有别人也趁虚而入,不能完全排除。快速执行几条命令:
last -20 # 查看最近的登录记录 cat /etc/passwd # 检查账户列表 cat /etc/sudoers # 检查sudo权限正常的运维环境里,这些检查能让你的操作闭环,也符合审计要求。尤其是那些常年开着SSH的服务器机器,改完密码留一份记录,日志归档后出了问题有据可查。
5.5 如果连GRUB都进不去怎么办
还有一种更极端的情况:开机直接黑屏、GRUB菜单不出现、或者系统直接卡在Logo界面。这时候单用户模式也无从谈起。通常我会用LiveCD/U盘启动盘把系统拉起来,挂载根分区,直接chroot进系统改密码,或者修复GRUB引导。
银河麒麟V10的LiveCD或系统安装U盘本身就带有修复模式,启动后选择“系统修复”或者“Rescue mode”,就能进入一个临时的Linux环境。挂载根分区后执行:
mount /dev/mapper/klas-root /mnt mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys chroot /mnt passwd root这套流程适合用来修复引导、改密码、卸载装坏的驱动,用途比单用户模式更广。但日常忘密码的操作,单用户模式已经足够,不要一步跨到LiveCD去。
6. 这件事背后的安全底线,一定要拎清楚
单用户模式是个强大的功能,但也正因为强大,使用它必须带着清醒的安全意识。
6.1 物理接触权限就是最高权限
如果你能物理接触一台机器,那么在绝大多数没有硬盘加密的Linux系统上,拿到root权限只是时间问题。单用户模式、LiveCD、甚至直接拆硬盘挂到别的机器上,都是可走的路径。所以我不建议把“会进单用户模式”看成什么高深的技术活,它更像是一个基础生存技能。
也正因为如此,对任何企业内部来说,给物理主机加BIOS/UEFI密码 + 开启Secure Boot + LUKS全盘加密才是真正有效的防护。尤其银河麒麟V10这种国产运维环境,很多单位对合规有要求,更应该在部署阶段就规划好。
6.2 LUKS加密下的情况
如果你的机器在安装系统时做了磁盘加密(LUKS),那么单用户模式的路径会变成:开机后先输入LUKS密码解密磁盘,然后才进入GRUB菜单,然后才能通过改内核参数进入单用户模式。这种情况下,如果你连LUKS密码都忘了,那单用户模式也救不了你,只能靠备份和重装了。
所以在客户现场,我向来都会多问一句:“你记得加密密码吗?”别等折腾了半天卡在解密这一步才发现白干了。
6.3 操作前先做备份和记录
改密码这种操作虽然风险不高,但在生产或验收环境里,任何操作都建议先留个记录。我自己的习惯是:
- 操作前通过
history或屏幕录屏留痕; - 操作中每一步记录时间和命令;
- 操作完成后把新密码放到公司密码管理平台,或者当面交给责任人。
这套习惯陪我解决了无数“救火”场景,也避免了很多“改完说不清”的扯皮。
7. 最后说点我自己的经验
用了这么多年Linux系统,也接触了不少银河麒麟V10桌面版的现场案例,每次帮人处理忘密码的故障,我都会顺带做两件小事:一是建议对方开启GRUB的密码保护,二是建议每隔一段时间主动验证一下应急恢复流程。
GRUB密码保护的配置是:
grub2-setpassword执行后会让你输入一个GRUB管理密码。配置好之后,再进GRUB改启动参数就要先输密码了,这样即使有人能碰到机器,也没法轻易单用户模式改密码。
另外,每次给机器做完密码重置,记得把那次的操作时间、原因、执行人记在运维文档里。国产化系统在项目交付阶段,审计查得最严的就是这种“后门式操作”,留下过程记录既是保护自己,也是保护团队的合规底线。
如果你手边的机器还在跑着老的V10版本,GRUB界面和参数可能有细微差异,但核心思路不变:进GRUB、改启动项、换root shell、重置密码、处理SELinux、正常重启。把这条路走通一遍,以后再遇到类似的问题就不会慌。
本文还有配套的精品资源,点击获取