
1. 写在前面为什么麒麟系统重置密码很多人都卡在救援模式上麒麟桌面系统 V10-SP1 2503 这个版本这两年在政企、教育、金融等领域铺开的速度很快。日常运维里最常遇到的一个场景就是用户密码忘了或者员工离职没交接系统进不去机器又不能随便重装。这时候重置密码就成了刚需。网上关于 Linux 改密码的教程很多网上随便一搜就是GRUB 菜单按 e 改 rd.break、single 单用户模式这类方案。但放在麒麟桌面系统上这些老招数经常失灵。我实测了几次后发现麒麟 V10-SP1 2503 的启动流程和安全策略做过调整单用户模式默认限制很多倒是官方安装镜像自带的救援模式Rescue Mode反而是最稳、最不容易出幺蛾子的路径。这篇文章没有多余的废话就是把我自己从制作启动盘、进救援模式、挂载系统、重置密码到验证登录的完整过程捋了一遍。里面所有命令、报错、坑点都是我实际敲过的。无论你是刚接手国产化终端维护的 IT 新人还是已经踩过几次坑的运维老手按照这个流程走一遍基本能在 10 到 15 分钟内把密码问题解决掉。顺便说一下这个救援模式不仅用于重置密码。系统 grub 引导损坏、内核更新后进不去桌面、root 密码丢失都可以走同一条路径。你只要把这一套操作玩熟大部分系统进不去的故障都能快速介入处理。所以我建议你把下面的命令记到自己的运维手册里关键时候真的能救命。2. 准备工作先把启动盘和引导环境搞清楚后面才不会手忙脚乱2.1 用哪份镜像、用什么工具做启动盘先说镜像。麒麟 V10-SP1 2503 的桌面版本国内发行版基本是基于 openEuler 22.03 LTS 内核路线构建的镜像文件名一般长这样Kylin-Desktop-V10-SP1-2503-xxx.iso。你手里如果有对应版本的光盘镜像直接用就行。没有的话去官网或者单位内部软件仓库下载一份同版本镜像即可。这里有个细节要记住救援模式最好是使用与系统同版本或者相近版本的镜像去引导避免内核模块差异导致挂载时认不出磁盘。启动盘制作工具方面我自己的选择排序是Ventoy最强推。做一次启动盘之后直接往 U 盘里扔 ISO 就能启动不用反复烧写运维手里备一个很值得。dd 命令Linux 环境下最朴素可靠的方案一行命令搞定适合你手头就是个 Linux 机器的情况。Rufus / UltraISOWindows 环境下方便但注意写盘模式要选对。Ventoy 的原理是在 U 盘上分出一个引导分区启动时自动扫描盘内 ISO 文件并生成引导菜单。对运维来说一个 32G 的 U 盘里同时放麒麟桌面、麒麟服务器、Ubuntu、Windows PE 的镜像现场直接选镜像启动效率极高。2.2 UEFI 和 Legacy 引导的坑必须开机前确认制作好启动盘只是第一步。麒麟 V10-SP1 2503 默认安装时一般走 UEFI 引导尤其近两年的新机器出厂固件默认就是 UEFI 模式Secure Boot 还可能是开启状态。你在 BIOS 里把启动方式设置成 U 盘优先时有两点一定要看准启动项里要选择带 UEFI 前缀的 U 盘条目比如UEFI: USB DISK 2.0而不是单纯的USB DISK。选错的话有些镜像会直接引导失败或者进入 Legacy 兼容模式导致后续键盘失灵、识别不到硬盘。如果开机卡在引导界面没有反应先进 BIOS 把 Secure Boot 临时关掉装完系统后再改回来。因为它默认加载的签名数据库不一定包含麒麟引导器的签名卡引导的现象非常常见但总算不上大问题值得留意。顺带说一下不少国产终端比如飞腾、鲲鹏、海光平台的机器在开机时进 BIOS 的快捷键不太一样常见的有 F2、F10、Del。拿不准就在开机瞬间狂按总有一个能进。真不行就在 GRUB 界面看有没有固件设置入口。2.3 提前确认磁盘是否做了 LUKS 加密这个点很容易被忽略但一旦遇到能拦你 20 分钟。麒麟桌面系统在安装时有一个磁盘加密选项勾选之后整个分区使用 LUKS 加密。如果你管理的机器当时开了这个选项那么进入救援模式后系统不会直接让你挂载分区而是先弹出一个界面要求输入 LUKS 密码解锁。这里有个残酷的现实如果用户把系统密码忘了可能 LUKS 密码也一起忘了或者压根就没分开记录。遇到这种情况设备上存储的数据基本就没办法找回了。这也提醒我们给用户装机时尽量不要图省事开启磁盘加密除非有硬性安全合规要求。如果必须开启LUKS 恢复密钥一定要单独抄下来存在安全的地方。3. 实操全流程从引导到重置密码每一步都给你拆开讲3.1 从 ISO 引导找到救援模式入口启动盘插上BIOS 里选好 U 盘引导重启后会看到麒麟安装引导界面。注意麒麟桌面系统的安装界面默认是中文的主菜单一般显示安装系统选项。很多人到这里以为只能安装系统就直接放弃了其实入口就藏在下面。在引导界面选择安装系统进入后安装程序会加载一段 Anaconda 图形界面就是安装框架界面。在这个界面的中部或者右下角通常能看到一个救援模式按钮或者下拉菜单点进去之后安装程序会问是否要尝试挂载已有 Linux 系统。这里选择继续它会扫描硬盘上的现有安装。如果识别成功会提示根分区已经挂载到了/mnt/sysimage目录。到这里先别着急操作打开终端窗口图形救援模式一般有打开 Shell功能下一步才是关键。如果没有显示图形界面直接进入了字符终端也不用慌流程是一样的只是你要手动挂载。我先说一手快速判断方法执行lsblk或者fdisk -l看看硬盘分区结构搞清楚哪个分区是根分区。常规单盘布局下/dev/sda2或/dev/nvme0n1p2大概率是根/dev/sda1是 EFI 分区或者/boot分区。记住了再往下走。3.2 chroot 挂载流程为什么顺序不能乱漏一步都会出事进入救援模式的 Shell 之后我们需要把原系统切进去用 chroot 的方式让后续操作的根目录变成硬盘上的真实系统和命令。麒麟系统的根分区在救援模式下通常被自动挂载到/mnt/sysimage但强烈建议你先确认一下有没有挂好ls /mnt/sysimage/能看到etc、usr、home、root这些目录说明根分区已经挂上了。如果有独立/boot分区就是你刚才lsblk看到的另一个 Linux 分区还要手动挂载一下这样才能保证后面某些指令可以正常执行mount /dev/sdaX /mnt/sysimage/boot挂载顺序上有一个小原则先挂根再挂 boot。如果根没有挂载直接挂 boot 到/mnt/sysimage/boot肯定报错因为那时候/mnt/sysimage还是空的。这台机器如果有多个分区比如数据盘独立分区也可以一并挂上帮忙确认但对密码重置来说不是必须的。接下来就是把系统的伪文件系统挂上去让 chroot 环境里的进程能识别设备、进程和内核状态。这条命令组合是 Linux 救援的固定套路mount -o bind /dev /mnt/sysimage/dev mount -o bind /proc /mnt/sysimage/proc mount -o bind /sys /mnt/sysimage/sys有的教程还会让挂/run不过麒麟系统实测下来上面三个就够用了。然后正式切进系统chroot /mnt/sysimage /bin/bash执行完这一步你的终端提示符应该会变成bash-4.4#或者类似的样式。如果你能看到类似sh-4.2#之类的提示符说明已经成功进入原系统了。从这一刻起你执行的命令就是原系统环境里的命令比如cat /etc/os-release就能看到麒麟的版本信息。这里有个常见的翻车点进入 chroot 之后发现网络不通想用yum装东西报 DNS 错误。这是因为你没有挂载/etc/resolv.conf。虽然重置密码不需要联网但如果你后续想补装别的工具建议先执行cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf这条命令把当前救援系统的 DNS 配置复制进去不然 chroot 后访问外网会有问题。不过记住这只是临时的退出 chroot 后可以不管。3.3 passwd 重置密码命令很简单但策略和细节不简单进到 chroot 环境之后重置密码的命令本身很朴素passwd root这是改 root 的密码。如果要重置普通用户比如用户名叫 zhangsanpasswd zhangsan执行后系统会让你输入两次新密码没有回显是正常现象。敲完回车出现passwd: all authentication tokens updated successfully就说明成功了。但这里有一个麒麟系统特有的坑密码复杂度策略默认是开启的。麒麟的系统在/etc/security/pwquality.conf里配置了 PAM 密码质量要求默认要求新密码至少包含大小写字母、数字和特殊字符中的三类以上长度一般不低于 8 位。你要是只输入123456很可能会看到类似这样的报错The password fails the dictionary check - it is based on a dictionary word别慌这恰恰说明系统安全策略是启用的。稳妥的做法是给用户设置一个复杂密码比如Kylin2025Secure这类组合然后登录后再让用户自己改。如果你确实有内网环境安全要求较宽松也可以先修改策略文件再重置密码但不推荐在生产环境这样做。另外提醒一件事密码重置完记得检查一下这个用户账户有没有被锁定。麒麟系统连续输错密码多次后账户会被 PAM 的pam_faillock机制锁定。在 chroot 里检查命令很简单faillock --user zhangsan如果显示有锁定记录顺手清掉faillock --user zhangsan --reset真实场景中很多人只改了密码忽略了账户锁然后告诉用户密码已经改好了结果用户还是登录不上就容易产生尴尬。这个细节一定要加入你的操作清单。3.4 退出救援模式重启验证密码改完别直接拔 U 盘先规规矩矩退出和重启exit umount /mnt/sysimage/boot # 如果之前挂过 umount /mnt/sysimage/dev umount /mnt/sysimage/proc umount /mnt/sysimage/sys umount /mnt/sysimage然后重启reboot有的救援环境里执行reboot没反应那就直接exit退出 Shell回到图形界面选择退出或重启。重启后记得拔掉 U 盘让它从硬盘正常引导。登录界面输入新密码能进桌面就万事大吉。这里我再提一个很容易被忽略的点第一次登录时麒麟系统可能会因为上一次密码是强制过期状态要求你立即修改密码。如果碰到这种情况让用户再设一个新密码继续操作即可。某些版本还会弹出密码即将过期的提示直接点确定继续就能用。3.5 一个关键补充遇到 SELinux 策略影响的处理麒麟 V10-SP1 2503 默认开启了 SELinux强制模式是enforcing。正常情况下你用passwd命令改密码不会触发安全上下文问题因为在 chroot 里你直接访问的是磁盘文件和运行时策略关系不大。但如果你在救援模式下还动了其他文件比如修改了/etc/shadow的权限最好在重启前让系统重新标记一下 SELinux 上下文touch /.autorelabel这样重启后系统会自动清理异常的 SELinux 标签避免登录阶段出现Permission denied之类的诡异问题。不需要手动跑restorecon这个文件就是给系统一个下次开机要做重标记的信号。我遇到过几次在救援模式下排查问题时碰过/etc/shadow文件属性重启后用户能认证但进不去桌面后来发现就是 SELinux 标签不对。对于只执行passwd命令的常规操作一般不会出这个问题但这个技巧建议记住。4. 常见问题与排查技巧实录4.1 救援模式识别不到硬盘分区这个报错我遇到得比较多尤其是一些预装系统的国产整机。原因往往不是系统的问题而是 BIOS 的 SATA 模式设置变了原来装系统时用的AHCI或NVMe结果 BIOS 被重置或者 CMOS 放电后变成了 ATA/IDE 兼容模式。这种情况下救援模式能看到盘但挂载时报错。处理思路重启进 BIOS找到 SATA 模式选项改回跟原来一致的模式。如果原来就是 AHCI确认 BIOS 里没有关闭 AHCI 相关的选项。另外磁盘如果走的是硬 RAID救援镜像里没有对应阵列卡驱动也会识别不到。那就不太容易处理了建议先确认是否有阵列卡。还有一种情况比较隐蔽分区表类型是 GPT但引导模式被切成了 Legacy导致挂载逻辑混乱。这种你可以先用blkid /dev/sdaX查看分区类型再确认 BIOS 引导模式是否一致。4.2 chroot 之后命令提示 command not found进入到 chroot 后如果发现连ls、cat都没了或者提示找不到多半是/mnt/sysimage挂载的根本不是你系统的根分区而是挂到了其他分区上。比如有些机器的/boot分区大一点你误把它当根分区挂载里面没有/bin、/usr自然没法执行命令。这时候先exit回到救援环境用lsblk仔细看分区大小和挂载点lsblk -f-f参数会显示文件系统类型和 UUID。一般情况下根分区文件系统是 xfs 或 ext4/boot是 vfatEFI 分区或 ext4。认准了再挂载。如果挂载时报错wrong fs type说明文件系统类型还没识别可以手动指定mount -t xfs /dev/sdaX /mnt/sysimage4.3 重置完密码重启后提示密码错误或账户被禁用这种情况我复盘了几次主要有三个原因一是你在 chroot 环境里改的用户名写错了比如系统里真实用户名是zhangsan你敲成了zhansan命令执行成功也会提示成功实际上是新创建了一个用户或者直接改了个不存在的用户但登录时自然不对。改完之后用cat /etc/passwd确认一遍用户列表再针对性操作。二是账户密码确实改了但账户本身被usermod -L锁定过。这种情况在离职交接的机器里很常见管理员在删除前先锁定了账户并没有真正删除。在 chroot 里执行usermod -U zhangsan解除锁定。然后再检查passwd -S zhangsan的输出第二列是L表示已锁定P表示可用密码NP表示无密码PS表示密码已设置且可用。三是影子文件权限异常普通用户无法读取/etc/shadow。检查ls -l /etc/shadow权限正常是----------600所有者 root确保没有因为救援操作把它改成其他权限顺手纠正一下chmod 600 /etc/shadow4.4 没有启动盘怎么办备用方案与限制运维现场不一定随身带启动 U 盘那还有没有别的办法有且只有一个比较现实通过 GRUB 引导临时进入单用户模式。但麒麟 V10-SP1 2503 上我实测发现这个入口默认也是受限制的除非你之前就在系统里做过配置否则很可能卡在Entering rescue mode...或者要求输入 root 密码不能进入。方法本身不难重启后看到 GRUB 菜单时按e进入编辑模式找到linux开头的那一行在末尾加上single然后按CtrlX或F10引导。进入后同样是passwd命令重置密码。如果你熟悉这个流程可以试但前提是系统没有设置 GRUB 密码也没有启用 Secure Boot 后的签名验证限制部分机型会这样。所以我的建议是有条件还是走官方救援模式更稳妥。现场如果实在没带 U 盘临时用手机连电脑通过网络引导也是高阶玩家的路线但操作复杂度高不展开讲。4.5 重置密码后 VNC / 远程桌面的登录异常这个坑是我在某次帮用户处理完密码之后才发现的本机密码重置成功但用户习惯用 Windows 远程桌面连接麒麟系统结果在远程界面里总是登录失败。原因不是密码不对而是远程桌面服务的认证信息缓存问题。麒麟桌面系统上常见的远程方案是 VNC比如 TigerVNC或 xrdp。密码重置后VNC 的认证是基于系统用户名密码的理论上立即生效但如果你用的是 xrdp有可能会话管理器还缓存着旧密码状态。处理方式也不复杂重启相关服务即可systemctl restart xrdp systemctl restart vncserver:1.service # 按实际服务名调整如果重启服务不行再直接重启一次系统基本都能解决。这也提醒运维人员重置密码这种事不止本机登录要验证远程登录通道也要一并测一遍。很多用户不坐在电脑前面都是远端接入你改完密码通知对方对方说连不上你再排查反而更费时间。5. 救援模式之外的周边运维远程控制与虚拟打印5.1 Windows 远程操作麒麟桌面系统的要点这次为用户重置密码的过程中我顺便把 Windows 远程控制麒麟 V10 桌面系统的几件常事理了一下。你需要明确的是麒麟桌面默认不带 Windows 自带的 RDP 远程协议常见的做法有两个方向。第一种是安装 xrdp这样 Windows 自带的远程桌面连接mstsc就能直接连到麒麟系统上。安装和启动都很直接sudo apt update sudo apt install xrdp sudo systemctl enable xrdp --nowxrdp 的会话默认会走 Xorg 或者 Xvnc 后端。麒麟桌面 V10 上实测 xrdp 能正常出来桌面但偶尔会有桌面会话卡死的情况大多是图形会话组件和 xrdp 的兼容性问题。真卡住了杀掉会话进程重新登录即可。第二种是走 VNC 协议。麒麟系统上可以装 TigerVNCWindows 端用 VNC Viewer 连。好处是可以在系统真实桌面上操作xrdp 默认是新开的虚拟会话界面适合需要远程协助用户操作真实桌面的场景。配置 VNC 时建议开启密码认证并限制只监听本地回环地址再用 SSH 隧道转发安全性更好。我个人的建议是日常办公场景优先用 xrdp轻量、简单、可视化配置少远程协助运维场景用 VNC能看到用户实时页面沟通起来不费劲。不管你用哪一种重置密码之后都要同步验证一下能不能正常登录不然容易鸡同鸭讲。5.2 麒麟桌面系统的 PDF 虚拟打印机重置密码后别忘了测热词里提到的麒麟桌面系统 pdf 虚拟打印机其实是系统自带的 CUPS 打印服务加虚拟 PDF 打印机功能。简单理解就是你打开任何文档在打印对话框里选一个名为打印到 PDF或者PDF的虚拟打印机系统就会把文档打印成一个 PDF 文件保存到指定目录默认一般是~/Documents或者弹窗让你选位置这个功能在办公场景里非常高频。重置密码这类操作一般不直接影响虚拟打印机但如果我在救援模式里顺手动过系统库或者打印服务就必须确认一下 CUPS 服务状态。常用命令systemctl status cups systemctl restart cups另外如果系统里虚拟打印机消失了检查是否安装了cups-pdf包dpkg -l | grep cups-pdf如果没有就补装sudo apt install cups-pdf装完之后在打印设置里重新添加打印机手动选择PDF驱动即可恢复打印到 PDF功能。说实话打印到 PDF这个功能和密码重置没有直接关系但既然提到了我就多说一句这种小工具类功能平时不起眼真等到月底要做报表的时候找不到用户就会着急报障。所以每次我动完系统都会顺手验证一下打印服务、输入法、网络连接这三个最常用的功能成本很低但能避免很多后续麻烦。6. 重置密码避坑清单我把踩过的坑一次性整理给你到这一步主流程已经结束了我把整个过程中遇到过的和高频可能遇到的问题整理成一份清单直接照着做能省很多时间。检查项操作说明引导模式确认 UEFI 启动项别选 Legacy 项导致引导异常磁盘加密确认 LUKS 是否启用启用后必须输入 LUKS 密码才能挂载根分区确认lsblk -f查看文件系统挂载错了分区命令全失效伪文件系统bind 挂载 /dev /proc /sys漏挂会导致 chroot 内设备识别异常用户列表cat /etc/passwd确认用户名拼写防止改错目标密码策略按复杂度要求设置密码避免重置后登录又被策略拦截账户锁定faillock --user 用户名 --reset多次输错锁定的账户要解锁影子权限/etc/shadow权限 600权限异常导致认证失败SELinux必要时touch /.autorelabel避免上下文异常导致登录异常服务验证测本机、远程、打印服务远程桌面和打印功能同步确认关于运维习惯我多说几句每一次重置完密码记得记录操作时间、设备序列号、重置了哪个用户、新密码的初始值如果临时设置然后在交付给用户时明确告知对方首次登录后必须修改密码。这既是安全要求也是为了避免密码还是原来那个吗新密码是多少这类来回沟通的成本。再有大规模终端统一管理的话建议直接规划集中身份认证比如 LDAP 或 AD 域账号密码统一管控就不会每台机器都单点维护了。不过那是另一个大话题不在这次救援模式的操作范围里展开。7. 最后再分享一点我的个人体会做运维这件事很多时候不是在拼技术深度而是在拼遇到问题时的确定感。我第一次给麒麟系统重置密码时也是网上东找一句西找一句什么方法都试了一遍最后差点把系统搞到重装。后来把官方救援模式这条路走通之后我发现它其实是所有方案里最不容易出岔子的只要你把挂载顺序和 chroot 逻辑想清楚几乎不会把系统弄坏。从我个人经验出发建议每位负责国产化终端的运维人员都找一台测试机亲手把这个流程完整走两遍。第一遍看着文档走第二遍关掉文档自己走直到你能闭着眼说出先挂根、再挂 boot、bind 三个目录、chroot、passwd、退出卸载这个流程下次碰到真实故障才不慌。真到了用户着急要文件、领导站在身后等消息的时候你淡定的操作本身就是给团队最好的支持。另外你要是不想在关键时刻满世界找 U 盘现在就动手做一个 Ventoy 启动盘把麒麟的 ISO 放进去随手放在工具包里。平时看起来没用真到那一天你会感谢现在这个有准备的自己。