ARTICLE DETAIL

资讯详情

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

银河麒麟V10密码遗忘?单用户模式+passwd快速重置

银河麒麟V10密码遗忘?单用户模式+passwd快速重置 简介针对银河麒麟桌面操作系统用户忘记登录密码而无法进入系统的场景这份PDF操作手册完整梳理了通过单用户模式重置登录密码的具体方案。手册共包含一个PDF文件压缩包大小约327KB内容从启动主机进入grub界面开始逐步演示如何编辑启动项在linux行的末尾追加consoletty0 init/bin/bash参数再按CtrlX或F10键进入单用户模式随后使用passwd命令输入并确认新密码最后借助reboot -f命令或CtrlAltDelete组合键强制重启使修改生效。操作说明同时覆盖X86架构与ARM架构并配有界面示意和注意事项例如进入单用户模式后屏幕会短暂黑屏等待片刻即可避免用户误以为是故障同时提醒在安全环境下谨慎操作遇到问题可参考手册注释或联系技术支持。目前已有1024人学习下载适合系统管理员、运维人员以及遇到密码遗忘问题的普通用户作为应急维护的实用参考。1. 银河麒麟桌面V10(sp1)用户密码忘了单用户模式是最快的后悔药银河麒麟桌面V10(sp1)的用户密码忘记时不用急着重装系统。进入单用户模式用passwd命令重置密码是这套系统里最直接的后悔药——从开机到回到桌面一般十分钟内能搞定。我最早意识到这个流程的重要是在处理一台快过保的办公电脑交接问题时前任管理员给root和普通用户都设了不透明密码现场所有人都知道开机解锁口令但没人知道登录密码。后来凡遇到这类「看得见桌面却进不去系统」的场景我都会先确认机器能不能进GRUB引导菜单能进GRUB就按这条路线走。这篇文章写给两类人需要批量帮用户救密码的桌面运维以及自己电脑密码突然失效的个人用户。全程不需要准备U盘不需要拆机也不需要任何外部工具。2. 进入单用户模式的两种方法GRUB内核参数与systemd救援目标银河麒麟桌面V10(sp1)的引导链路是开机BIOS/UEFI固件 → GRUB2引导菜单 → Linux内核 initramfs → systemd初始化。平时我们看到的登录界面是由systemd拉起图形会话后呈现的。所谓「单用户模式」本质上是绕过systemd让内核在启动时直接拉起一个root shell——这个shell默认不校验任何密码所以root的登录密码即使彻底忘了也不影响你进到系统里修东西。需要先说明一个边界银河麒麟桌面版不像老Unix那样有运行级别1init 1它的单用户效果要靠GRUB传参或systemd target来实现。下文两种方法第一种最彻底适合root密码也忘掉的情况第二种保留systemd外设初始化适合USB键盘在纯bash下失灵的情况但前提是root密码你还能记得。2.1 方法一开机按E编辑GRUB用init/bin/bash直达root shell操作流程是这样的开机看到GRUB引导菜单通常是带麒麟Logo的黑白菜单时用上下键选中默认的启动项按下键盘上的字母E进入启动参数编辑界面。在这个界面里找到以linux开头的那行行首一般是linux /boot/vmlinuz-...后面跟着rootUUID...、ro、splash、quiet这一串参数。把鼠标光标移到该行行尾先敲一个空格然后追加init/bin/bash。如果这台机器开启了磁盘加密GRUB阶段会先出现解锁磁盘的提示输入解密密码后才能进入编辑如果加密密码也忘了直接跳到第5章的5.5节那里有说明。编辑完参数后按CtrlX或F10启动系统不会再走正常的systemd流程而是直接落进一个root bash命令行界面。# 进入bash后的第一件事确认根分区的挂载方式 findmnt / # 如果OPTIONS列显示 ro表示根分区是只读需要重新挂载为rw mount -o remount,rw / # 查看当前身份确认已是root id这里解释一下为什么必须检查挂载方式。linux那行参数里默认带着ro内核按只读方式挂载根分区。passwd命令要往/etc/shadow里写密码哈希只读文件系统下这个写入会失败报错信息还特别容易让人误判。findmnt /的输出里OPTIONS列如果带着rw就说明可写如果显示ro就用mount -o remount,rw /重新挂载。remount的意义不是再挂一块盘而是对已挂载的文件系统原地切换挂载选项这里把只读切换成读写。还有一个细节容易卡新手单用户模式的bash环境很简陋PATH可能不完整。如果敲passwd提示command not found先补一下PATH再继续。export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin passwd --help2.2 方法二不碰内核启动参数用systemd的rescue.targetinit/bin/bash的缺点是它绕过了systemd导致一部分硬件服务没有启动。在我的实际经验里最典型的问题是USB键盘在纯bash环境下失灵——后面第5.4节会详细说。如果你进的是带systemd的救援模式外设驱动照常初始化键盘问题基本不会出现。具体操作同样在GRUB编辑界面找到linux开头的那行行尾追加systemd.unitrescue.target然后按CtrlX或F10启动。这里的关键差异在于rescue.target会要求输入root密码才能给出root shell。所以这个方法适用于「普通用户的密码忘了但root密码还记得」的场景如果root密码也一起忘了用rescue.target会在登录提示面前卡死只能回到2.1的init/bin/bash方案。进入后的环境变量完整passwd、findmnt这些命令都能直接用。但根分区的只读问题依然存在Linux行里的ro照样会生效所以还是要执行一次mount -o remount,rw /。考虑到银河麒麟V10(sp1)默认的登录界面隐藏了root入口运维在固定维护机上给普通用户改密码用rescue.target更稳至少你不会在改密码的半路碰到键盘失灵的尴尬。2.3 磁盘加密下的特殊处理先解锁再谈改密码银河麒麟桌面版在安装阶段如果勾选了磁盘加密开机后GRUB加载完引导镜像会先停在一个「请解锁磁盘」的界面。这个锁的意思是根分区数据整体用LUKS加密了内核必须拿到解密口令才能读取真正的文件系统。此时你还没进到任何bash环境init/bin/bash根本没机会执行。在这种加密前提下能做的事只有一件在解锁界面正确输入加密磁盘的口令。这个口令和用户登录密码是两个独立体系——很多人拿用户密码去解锁会一直提示失败然后困惑「为什么单用户模式也进不去」。如果磁盘解密口令也忘了单用户流程到头我能给的现实建议是翻安装时生成的恢复密钥备份或者确认是否配置过TPM自动解锁都没有的话只能走数据恢复和重装路线这不是单用户模式的职责范围。进入bash后加密卷会映射在/dev/mapper下根分区的挂载点照样在/上。这时findmnt /看到的SOURCE会是一个dm设备名而不是普通分区名。mount -o remount,rw /的操作不变改密码的后续流程照常进行——磁盘加密只做整体数据保护不拦截已经解锁的根分区写入。3. 用passwd重置密码前的三个准备只读挂载、SELinux上下文、密码锁定状态从单用户模式落到root bash之后理论上可以直接敲passwd 用户名改密码。但直接敲成功的前提是系统已经满足三个条件根分区可写、安全模块不拦写入、目标用户没被锁定。这三件事里任何一件没做passwd都会以各种姿势失败。本节把三件事拆开讲清楚避免你在黑匣子里瞎试。3.1 修复只读根分区mount -o remount,rw / 的标准动作ro参数是银河麒麟安装器在写GRUB配置时固定带上的原因很简单正常启动流程里systemd会在挂载根分区后做一次只读→读写的状态切换但init/bin/bash绕过了systemd内核按ro挂载后没人再去切换它。所以每次进单用户模式第一件事不是改密码而是验证根分区状态。# 一条命令确认挂载状态 findmnt -no SOURCE,FSTYPE,OPTIONS / # 看到 ro 则立即切读写 mount -o remount,rw / # 验证切换成功 findmnt -no OPTIONS /findmnt的-no参数是「不打印标题只输出字段」这里指定了设备、文件系统类型、挂载选项三个字段。执行完remount后OPTIONS列应该出现rw。如果remount报了target is busy通常是有进程占用了根分区文件先执行sync再重试一次。实在不行用exec /sbin/init让systemd接管后再remount——但那样就从单用户跳回正常启动了一般不走到那一步。3.2 passwd命令的完整用法与验证别只盯着回车根分区可写之后正式执行修改# 修改root用户密码 passwd root # 修改普通用户密码比如zhangsan passwd zhangsan执行passwd后会交互式提示输入两次新密码输入的时候终端不回显这是正常现象别以为键盘没反应。密码设多长、要不要大小写数字混用取决于系统里PAM的密码策略配置。银河麒麟桌面版默认启用了密码复杂度检查太短的、纯数字的、和用户名相同的密码会被直接拒绝。我的建议是第一次设一个符合规范的强密码比如Kylin2024op先保证能进系统进去后再用passwd改成自己顺手的——不要幻想用123456能骗过PAM。改完之后立刻验证写入结果# 查看root密码状态P表示有密码L表示锁定NP表示无密码 passwd -S root # 确认shadow里第二字段以$6$或$1$开头而不是!或* awk -F: $1root{print $1, $2} /etc/shadow这里有个常见误区/etc/shadow里第二字段是密码哈希不是明文密码。看到$6$开头说明哈希由SHA512算法生成属正常。如果这个字段以!开头或者只有一个*说明该用户处于锁定状态——这时候passwd改了也白改登录界面照样登不进必须先解锁。解锁命令是passwd -u 用户名用root身份执行即可。3.3 SELinux上下文与shadow锁两个不显眼但容易翻车的细节银河麒麟桌面版默认不强制开启SELinux但部分安全加固过的系统可能在安装时启用了。区别在于SELinux强制模式下passwd虽然能写入/etc/shadow但新写入的文件上下文标签可能和原有文件不一致重启后系统可能拒绝用这个文件做认证。进单用户后先检查一下再动手# 没有getenforce命令或输出Permissive/Disabled可跳过本节 getenforce如果输出是Enforcing那修改完密码后需要补一步在根目录创建一个标签重打标记文件让SELinux在下次启动时重新校准所有文件上下文。这一步在不同系统上的文件名不完全一样银河麒麟风格下我用的是touch /.autorelabel。执行完这个再sync、重启。没有启用SELinux的机器不需要做做了也没有副作用。另一个翻车点是锁文件。passwd依赖/etc/.pwd.lock和PAM的锁机制来防止多个进程同时写shadow。如果上一次系统是非正常关机锁文件可能残留在磁盘上。现象是执行passwd后提示Authentication token lock busy然后卡住。处理方式很直接先看是哪个进程占着没有进程残留就直接删掉锁文件再重试ls -la /etc/.pwd.lock /run/lock/passwd.lock 2/dev/null rm -f /etc/.pwd.lock /run/lock/passwd.lock passwd root删锁这件事看着粗暴但单用户模式下系统里只有你一个会话锁文件的保护意义不大放心操作。4. 从单用户到桌面重启流程、登录验证与日志检查密码写进shadow之后剩下的事是把系统从单用户状态切回正常启动。很多人在这一步翻的车比改密码环节还多根源在于不理解init/bin/bash把一号进程变成了bashsystemd从没被拉起来过。这时候敲reboot指令根本找不到协调关机的init进程或直接卡死。根治办法认清这一点之后选项就清楚了要么把init交还回去要么强制重启绕过协调流程。4.1 安全退出单用户exec /sbin/init 还是 reboot -f在init/bin/bash的会话里我推荐的标准收尾步骤是这样# 确保所有写入都落到磁盘 sync # 把1号进程交还给init/systemd让系统按正常目标继续启动 exec /sbin/initsync的作用是把内存里的脏数据强制刷入磁盘防止刚写好的密码哈希因断电丢失。exec /sbin/init会用init进程替换当前bash进程这样一号进程就变回init系统会沿正常启动链路继续跑最终停到登录界面。这个过程不需要关机重启实际是「接着刚才的引导继续走」。如果exec /sbin/init没有反应或卡住唯一可靠的兜底是用强制重启sync exec /sbin/reboot -f-f参数意思是force跳过shutdown协调直接触发内核重启。注意别敲成不带-f的reboot——那会再次尝试联系不存在的systemd然后毫无反应。这两条命令在单用户模式下是互补关系exec /sbin/init是优雅路径reboot -f是急诊路径。4.2 重启后第一件事从登录界面验证新密码重启完成后系统会回到正常的图形登录界面。此时输入刚才设置的新密码验证登录。这里有一个容易踩的坑如果你重置的是root密码图形登录界面通常不会让你直接用root登录——银河麒麟桌面版默认隐藏了root入口。这不代表密码没改成功换个普通用户登录然后开终端里执行su -切到root输入刚才的新root密码验证。如果登录被拒绝先不要急着怀疑密码输错回到单用户模式看看shadow状态。我在3.2节里的passwd -S命令就是为这一刻准备的。登录失败的典型场景有两个一是密码哈希没有正确写入shadow二是用户被锁定。前者重跑一遍passwd 用户名后者用passwd -u 用户名解锁后重试。4.3 用日志确认密码修改是否生效auth.log与journalctl双验证系统跑起来以后我习惯顺手查一下认证日志确认密码修改事件确实被记录了顺便排除异常登录。银河麒麟桌面版的认证日志默认写在/var/log/auth.log这是Debian/Ubuntu系路径部分服务器版或定制镜像可能用/var/log/secure。两个路径都存在时以实际写入的那个为准。# 查看最近一次密码认证事件 grep passwd /var/log/auth.log | tail -10 # 查看最近一次成功登录的来源IP grep Accepted password /var/log/auth.log | tail -5 # 如果是systemd管理的服务也看journal journalctl --since 10 minutes ago | grep -E passwd|sudogrep passwd /var/log/auth.log匹配的不只是密码修改行为还包括PAM认证过程。Accepted password这种行才是登录成功事件重点看来源IP和目标用户是否正常。如果发现有未知IP的Accepted password说明这台机器可能已被远程登录过——改完密码后要立刻检查有没有被种下后门或定时任务。这一步在给客户机器做密码重置时尤其重要日志确认后整个流程才算闭环不然你只改了自己这边的密码没法证明系统是干净的。5. 单用户改密码避坑5条血泪经验这章汇总我在真实环境里踩过和围观过的坑。每一条都按现象→原因→解决来写你在现场遇到同款情况时对号入座即可。5.1 只读文件系统报错passwd提示错误但没退出现象进入单用户bash后直接执行passwd root系统提示cant open /etc/shadow或Read-only file system输入密码后不见成功提示。原因根分区还挂在ro状态passwd往shadow写哈希时被内核拒绝。解决先执行findmnt /确认OPTIONS列看到ro就mount -o remount,rw /然后重新执行passwd。5.2 重启后再登登不进shadow字段没写入或用户锁定现象改完密码后正常重启登录界面输入新密码一直提示错误。原因要么passwd执行后没有实际写入比如前一条的只读问题没被发现要么用户本来就被锁定shadow第二字段是!开头。解决重新进单用户awk -F: $1用户名{print $2} /etc/shadow看第二字段以$开头说明密码在以!开头说明锁定需要passwd -u 用户名解锁后再试。改完记得sync。5.3 reboot卡死黑屏init进程被bash顶掉了现象单用户模式下敲reboot屏幕卡住不动SysRq按键也没反应。原因init/bin/bash把1号进程变成了bashreboot工具尝试联络systemd完成服务关闭流程但systemd从来没被启动于是命令挂在等待上。解决不要硬等按电源键强制关机后重新进入单用户收尾时先用sync再exec /sbin/init优雅交还或者直接exec /sbin/reboot -f强制重启。5.4 USB键盘在单用户模式失灵纯bash环境没人初始化外设现象GRUB界面键盘还能用进了init/bin/bash的shell后只有电源灯亮按键全部无效。原因bash模式跳过systemdUSB HID设备没有用户态服务拉起某些主板固件也不负责全部USB初始化老机器上尤其常见。解决优先换PS/2圆口键盘没有PS/2口时改用systemd.unitrescue.target进救援模式——前提是root密码没忘。如果你既没有PS/2键盘又没有root密码用U盘启动器做一个live系统挂载硬盘去改shadow那是另一套流程了。5.5 LUKS加密磁盘拦路单用户模式也进不去现象开机GRUB之后停在一个解锁磁盘界面输入什么密码都提示错误进不去bash。原因安装时开了全盘加密根分区被LUKS保护解密口令和用户口令是两个不同体系的凭据。解决回看安装时的加密口令有恢复密钥文件就从其他机器拷到U盘在这个界面选恢复密钥解锁。如果这两个都没有单用户模式救不了只能接受重装代价。不要重复尝试用户密码这一步的失败是必然的。6. 不止改密码批量重置、密码策略与安全收尾把单用户模式练熟之后你会发现它不只是「忘记密码时的后悔药」。系统交给新人接手、安全整改要求全员换密码、或者运维审计要求定期轮换口令时同一套流程稍微变通一下就能批量处理效率高得多。批量场景下passwd的交互式输入反而啰嗦我用的是chpasswd。它在单用户模式和正常root终端里都能工作一次性从标准输入读取用户名:密码格式的文本逐个写入shadow# 批量重置把三行密码一次性写入 for u in zhangsan lisi wangwu; do echo $u:KySec$(date %Y) done | chpasswd # 从文件读取用户与密码适合几十个账号的场景 chpasswd reset_list.txtchpasswd的输入格式很严格每行一个用户冒号分隔。文件里不要有多余空格密码里也不要带冒号。批量执行前先单独挑一个测试账号跑一遍确认密码策略接受后再全量执行否则PAM会把弱密码全部弹回去。密码轮换不能只改哈希配合chage设置过期策略才能形成闭环。常用参数我整理了一张表参数作用示例-m最少使用天数防止立刻改回去chage -m 1 zhangsan-M最长使用天数到期强制改chage -M 90 zhangsan-W过期前警告天数chage -W 14 zhangsan-E账号到期日期格式YYYY-MM-DDchage -E 2025-12-31 zhangsan我把chage写进收尾流程是因为只改密码不设过期的话下个季度又得有人爬到机房里应急。设个90天最长使用期等于给密码管理上了个闹钟。安全收尾的另半边是日志核对。密码重置属于高敏感操作干完之后我固定会看一眼/var/log/auth.log里有没有异常登录记录顺手检查root的SSH公钥有没有新增条目。一次正常重置应该只留下你自己产生的认证记录如果多出来未知IP的Accepted password说明改密码之前系统已经被人动过了要把这个信号同步给相关方再收工。做密码重置这事最怕的不是流程不会而是改完不验证就甩手。我自己在给客户机处理完每一次重置后都会在单用户里确认passwd -S状态、重启后在登录界面完整走一遍登录、再翻一遍日志三步一条线拉完才敢说完工。这个习惯救过我两次一次是改完密码用户当天说登不进一查是shadow字段本身带了特殊字符没写干净另一次是查日志时发现机器被异地登录过改密码只是补救的开始。密码恢复这条路走通一次不难难点在于每次都能走完流程不给自己留隐患。希望帮到你。本文还有配套的精品资源点击获取
返回列表