资讯详情

用Linux PE急救盘+chroot重置统信UOS/银河麒麟用户密码

📅 2026/10/11 14:19:02 | 华诺云谱 👁 阅读
用Linux PE急救盘+chroot重置统信UOS/银河麒麟用户密码
接手一台国产统信UOS的机器用户密码遗忘了。屏幕上只剩一个登录框输入多少次都进不去系统里又没启用SSH日常维护工具全都用不上。这个时候Linux版PE就派上用场了它相当于一个临时急救系统把目标机器的硬盘挂载起来再通过chroot进入原系统直接改掉用户密码。这套做法不仅适用于统信UOS对银河麒麟KylinOS以及大多数基于Debian的国产Linux发行版同样通用。在动手之前先建立认知Linux用户密码并不是存在“系统运行状态”里的而是写死在磁盘上的配置文件中。只要我们能以root身份修改这个文件就相当于改掉了整个系统的登录口令。整个过程不需要原系统的任何账号密码不需要重装系统也不会动到用户数据。这篇文章面向的就是系统管理员、运维工程师以及给家里装了国产系统的朋友——前提是设备归你自己或你所在的组织所有且确实是忘记密码需要恢复的合法场景。1. 为什么是Linux版PE先搞清楚密码“住在哪”1.1 密码机制/etc/shadow 才是关键写过Linux基础教程的人都知道用户账号信息主要存在两个文件里/etc/passwd记录用户名、UID、家目录等公开信息/etc/shadow才保存加密后的口令哈希、最后修改日期、过期策略等敏感内容。/etc/shadow里的每一行大致长这样testuser:$6$9fH7$VdE2mHbTn...:19050:0:99999:7:::用冒号分段其中第二段就是“口令哈希”。这一段从前缀就能看出算法$1$是MD5$5$是SHA-256$6$是SHA-512$y$是较新的yescrypt$2y$是bcrypt。所谓修改用户密码本质上是替换这第二段哈希同时在系统中关联的用户数据库里同步更新密码策略。也就是说搞定了/etc/shadow就等于搞定了登录校验。而这个文件是磁盘上的普通文件在另一个Linux环境下完全可以被挂载、读取、修改。这也正是Linux版PE方案的基石不需要进入原系统只需要进入一个功能完整、工具齐全的独立Linux环境把目标硬盘挂载起来把自己“降维”成该系统里的root管理员。1.2 Windows版PE为什么不行很多人第一反应是找Windows PE或者老毛桃、U深度这类维护盘理由很直接手头就有能进BIOS能操作硬盘。但真用一次就知道Windows PE处理国产Linux系统很吃力。Windows PE的内核不带ext4、xfs、btrfs的原生驱动哪怕用第三方驱动挂载上ext4分区也大概率只认“这是一个裸分区”识别不了LVM逻辑卷、处理不了LUKS全盘加密打开分区后你也没有chroot、passwd、openssl passwd这些可执行文件只靠一个文本编辑器改shadow还得自己拿程序生成密码哈希生成出来的算法格式还要能被目标系统的PAM接受。稍不注意就把shadow文件写坏系统彻底登不进去。Linux版PE则不存在这些问题。它就是一个精简或桌面化的Linux系统自带完整的shell工具链内核原生支持常见文件系统还能安装或加载lvm2、cryptsetup等模块。用它处理国产系统是站在“同类系统”的视角操作几乎不会出现“格式不支持”的硬伤。1.3 方案对比Linux PE vs 其他常见恢复手段恢复方案需要额外工具操作难度数据风险适用场景Linux版PE chroot一个U盘中低很低推荐首选通用性强GRUB修改启动参数为单用户无中低机器就在面前且GRUB没有加密时顺手可用厂商安装盘“恢复模式”原厂安装介质低中高厂商提供的正规通道但可能会触碰重置逻辑直接重装系统安装U盘低极高数据没备份时的下下策对比下来Linux版PE是平衡性最好的方案不需要依赖原厂商工具不修改分区结构不破坏磁盘数据也只是绕过了“登录认证”而没有绕过磁盘加密或其他保护机制。真正做运维的人应该都明白能自动化、可复现、手段通用的处理方式永远优于“找内部工具”这种指定平台方案。2. 准备工作制作一个靠谱的Linux急救U盘2.1 选择镜像哪些Live环境足够“好”既然是“Linux版PE”那第一步就得准备一个可以通过U盘启动的Linux系统镜像。推荐优先选择桌面版Linux发行版的Live镜像比如Ubuntu Desktop、Debian Live或者是任意一个你熟悉的、能启动到完整桌面的发行版。这里有两个选择标准。第一内核要比较新兼容性要好。老掉牙的发行版内核可能不识别新机器的NVMe磁盘、Intel/AMD新平台集显也不支持较新的ext4特性。第二工具要齐全。最好自带lvm2、cryptsetup、parted如果没有也得保证在Live环境里能通过包管理器安装。桌面版Ubuntu/Debian一般会包含大量磁盘工具因为安装器本身就用得到如果你手头只有安装ISO注意一定要在启动菜单里选择“Try/试用”或“Live system”而不是直接走安装向导。不建议用嵌入式、路由器固件这种过度精简的发行版当急救盘它们不一定带完整的bash环境更别说passwd了。2.2 用dd把ISO写入U盘最稳妥、最少踩坑的写入方式其实是纯命令行dd。写之前先确认U盘的设备符别把系统盘搞进去。把U盘插电脑上执行lsblk记下U盘对应的设备名比如/dev/sdb。确定就是它之后卸载U盘上可能存在的自动挂载分区然后写入sudo umount /dev/sdb1 2/dev/null sudo dd if/path/to/linux-live.iso of/dev/sdb bs4M statusprogress oflagsyncof/dev/sdb写的是整个U盘设备而不是/dev/sdb1这样的分区。oflagsync会让写缓存及时落盘结束后拔U盘更安全。整个写入过程可能持续几分钟视ISO大小和U盘速度而定。如果你习惯用Ventoy这类工具也可以把ISO文件复制进Ventoy分区就行。Ventoy的优势是以后换镜像不用重新格式化U盘缺点是少数老机器UEFI固件对Ventoy的引导兼容性一般。我个人的习惯是公用维护U盘用Ventoy给某台特定机器做恢复时直接dd最省事也最不容易出幺蛾子。2.3 引导设置UEFI、Secure Boot与传统BIOS制作好急救U盘后目标机器开机时按启动热键常见的是F12、F11、F7或Esc看具体机器选择从U盘启动。这里有几个很实际的注意点。Secure Boot安全启动是第一个坑。新版的主流Linux发行版默认带shim签名多数机器能在“启用安全启动”的情况下引导但国产系统配的老型号主板或者某些定制UEFI还是可能出现引导画面直接黑屏、转圈后跳回启动菜单的情况。遇到这种情况先临时进BIOS关闭Secure Boot恢复完成后记得再打开。第二个坑是UEFI和传统BIOS的启动模式不匹配。U盘启动项有“UEFIU盘”和“传统U盘”两种优先选和你机器系统安装模式一致的那个。机器原本是UEFI装的系统就用UEFI方式启动U盘原本是MBR传统引导就选传统模式。选错也能进Live环境但进Live之后可能看不到某些磁盘设备或者挂载方式异常。第三个坑是TPM等外设锁。个别厂商的机器在修改启动项后会触发TPM密钥不匹配第一次会建议重置BitLocker或磁盘加密。国产系统一般不会开启类似机制真遇到了也不必慌只要手头有加密卷密码重新登记TPM即可。动手前最好先查一下目标机器有没有全盘加密这直接影响后面能不能直接挂载。3. 核心操作流程挂载、chroot、重置密码3.1 进入Live环境先看清分区再下手U盘启动进入Live桌面后打开终端。第一步永远不是挂载而是看清磁盘布局防止误操作导致数据损坏sudo lsblk -flsblk -f会同时显示设备名、文件系统类型、UUID和挂载点。典型输出类似NAME FSTYPE UUID MOUNTPOINT nvme0n1 ├─nvme0n1p1 vfat A94A-... /boot/efi ├─nvme0n1p2 ext4 d31b... / ├─nvme0n1p3 ext4 e2c8... /home └─nvme0n1p4 swap b18f...认出哪个是根分区并不难挂载点显示/、文件系统为ext4、容量和系统盘匹配的那个基本就是。如果根分区是单独的LVM逻辑卷lsblk -f里会看到多一层的vg-lv设备文件系统也正常显示。看清之后先把根分区挂载到一个临时目录同时把独立存在的/home、/boot分区一并挂载到对应路径下。sudo mkdir -p /mnt sudo mount /dev/nvme0n1p2 /mnt sudo mkdir -p /mnt/home sudo mount /dev/nvme0n1p3 /mnt/home3.2 处理LVM和加密磁盘后再挂载国产系统在服务器场景尤其是银河麒麟V10服务器版上经常使用LVM逻辑卷管理磁盘。挂载前需要先激活卷组sudo pvs sudo vgscan sudo vgchange -ay激活之后逻辑卷会出现在/dev/mapper/下面。比如卷组叫vg_root逻辑卷叫lv_root对应的就是/dev/mapper/vg_root-lv_root挂载它即可。如果提示找不到卷组大概率是Live环境没装lvm2先sudo apt install lvm2装完再执行上面的命令。如果根分区是LUKS加密卷lsblk -f里会看到crypto_LUKS类型的分区。这时需要手动打开加密卷sudo cryptsetup luksOpen /dev/nvme0n1p2 myroot命令会提示输入加密密码。注意这里要的是LUKS密码不是用户登录密码。如果这个密码也忘了又没有关联的密钥文件那就真的没办法了——除非走官方数据恢复流程。这也是唯一一个Linux版PE解决不了的情况。打开后挂载/dev/mapper/myroot后续操作和普通分区完全相同。3.3 chroot进入目标系统重置用户密码挂载好根分区和home分区之后别急着直接编辑文件。更推荐的做法是chroot进入目标系统调用目标系统自带的工具来改密码。这样生成的哈希算法一定与系统当前PAM实现兼容不会出现“新哈希老系统不认”的问题。chroot之前需要把几个虚拟文件系统绑进去让chroot环境有完整的设备、进程、系统信息sudo mount --rbind /dev /mnt/dev sudo mount --rbind /proc /mnt/proc sudo mount --rbind /sys /mnt/sys sudo mount --rbind /run /mnt/run然后进入sudo chroot /mnt /bin/bash进入chroot环境后可以直接执行密码修改命令。先看系统里有哪些可登录用户cat /etc/passwd | grep -E /home| /root找到目标用户名后重置密码passwd 用户名按提示输入两次新密码就是。如果想同时管理root账号也可以在chroot环境里给root设置密码。如果发现目标用户在/etc/shadow里的哈希字段以!开头说明账户是被锁定的状态光passwd有时候不会解锁需要再多执行一步passwd -u 用户名3.4 退出、卸载并重启验证密码改完后先别急着拔U盘。退出chroot环境同步磁盘并卸载挂载点exit sync sudo umount -R /mntumount -R会递归卸载整个挂载树避免遗漏。如果提示target is busy说明还有终端进程停留在/mnt目录切换到别的工作目录再执行即可。然后关掉Live系统拔U盘正常引导目标系统。在登录界面输入新密码顺利进入桌面就说明完成了。如果系统提示“密码已过期需要修改”那通常是PAM密码策略导致的后面会讲处理方法。4. 实测中踩过的坑锁账户、哈希算法和PAM4.1 明明改完密码登录还是“认证失败”这是新手最容易困惑的场景密码明明执行成功了shadow里也有新哈希开机就是登不进去。原因之一哈希算法不兼容。如果你不是用chroot而是直接在Live环境里生成一个哈希替换/etc/shadow就要特别注意算法匹配。Ubuntu 22.04及之后的新版openssl passwd或者某些发行版默认的passwd可能生成yescrypt开头的$y$。而国产UOS早期版本、麒麟V10自带的PAM/libcrypt版本较旧不一定认识$y$导致认证直接失败。解决办法是尽量用chroot环境里的系统自带passwd因为那才是目标系统自己的工具链如果必须在外部生成哈希用兼容性最好的SHA-512openssl passwd -6 新密码把输出结果整段替换到shadow第二字段即可。原因之二账户本身是锁定的。有些国产系统出于安全默认锁定root普通用户也可能因为连续输错密码被锁。检查shadow第二字段是否以!开头是就执行passwd -u 用户名解锁。锁定时密码重置不会生效。原因之三密码“历史检查”。系统开启了密码复用策略新密码与最近几次旧密码相同PAM会拒绝写入。解决办法是换一个完全不同的新密码或者在chroot里临时清除/etc/security/opasswd里的历史记录再重置。4.2 登录失败锁定密码正确也进不去有一类情况非常隐蔽密码改对了但系统因为之前多次登录失败已经触发了PAM锁定策略。常见的是pam_faillock或较老的pam_tally2。这种锁定不一定反映在shadow里而是记录在/run/faillock/或/var/log/faillog。就算密码正确PAM在认证前就直接拒绝。处理方法是进入chroot后清理失败计数rm -f /run/faillock/*如果系统用的是tally2则执行pam_tally2 --user 用户名 --reset清理完再退出重启。实测遇到过某麒麟V10机器重置密码后登录界面“死循环”了很久最后发现是faillock目录里残留的计数文件在作怪清掉立刻恢复。4.3 挂载后umount提示busy处理完密码卸载时经常遇到umount: /mnt: target is busy。原因通常是终端当前目录还停留在/mnt或者某个进程还打开着该目录下的文件。最有效的处理cd / sudo umount -R /mnt如果还是提示busy可以用lsof D /mnt查看占用进程一般就是Live环境自带的文件管理器停留在那个目录。关掉文件管理器窗口或者fuser -km /mnt强制结束后再卸载就行。这个细节虽然小但每台机器都要遇到一次提前知道能省不少时间。4.4 如果不想做U盘GRUB单用户模式技巧有时候U盘不在身边机器又能直接接触物理键盘可以试GRUB方式。开机进入GRUB菜单按e编辑启动项找到以linux开头的内核参数行在末尾追加init/bin/bash然后按CtrlX启动。系统会进入一个极简的root shell。但由于根分区默认只读需要先重新挂载mount -o remount,rw / passwd 用户名这个方法比做U盘快但有很多前提GRUB菜单没有设置密码保护系统不强制SELinux的enforcing模式而且initramfs里工具够用。对国内常见的Debian系国产桌面系统来说这个方法多数时候可行但对强制启用SELinux的服务器版直接进入bash后修改/etc/shadow可能会因为上下文标签变化导致登录异常。如果遇到这类情况需要执行restorecon -v /etc/shadow修复标签。相比之下Linux版PE的chroot流程要稳妥得多处理完还能直接验证文件权限和标签所以我优先推荐前者。5. 一些额外心得如何防止下次再忘密码5.1 备份账号数据库是最便宜的保险Linux的账号体系其实就两个文件/etc/passwd和/etc/shadow。日常维护时每隔一段时间把这两个文件导出备份就能在密码遗忘后快速恢复。备份不需要存本地放到你个人加密U盘或者密码管理器里即可sudo cp /etc/passwd /etc/shadow /backup/path/有了这份备份恢复密码就变成“把历史shadow的第二段还原回去”这么简单。我处理过的很多故障机器其实都在安装系统时或首次配置时留过备份只是用户忘了放在哪儿。没事时存一份关键时候能救命。5.2 设置定期密码到期提醒国产系统默认不太强调密码期限很多用户从拿到机器到忘记密码中间隔了几年。建议在首次配置时对关键账号设置定期轮换提醒chage -M 180 用户名这样每半年左右系统就会在登录前提示修改密码。运维环境里还可以配合登录后横幅提醒避免用户把密码拖到彻底遗忘。对长期不用的备用账号每隔一段时间实测登录一次也是一种成本很低的预防办法。5.3 root账号与sudo授权的取舍很多国产桌面系统默认不给root设置独立密码而是通过sudo提权。一旦普通用户密码忘了而且没开启SSH就陷入“死锁”。我的习惯是为每台机器单独设置一个强root密码存在密码管理器中不随用户密码一起忘掉。这样用户密码遗忘时至少可以本地root登录处理或者在系统里直接passwd 用户名重建密码不需要拆机做U盘。当然root密码属于敏感信息内网落地要遵循最小权限原则只在应急场景使用不能随便写进共享文档。给root设置密码后记得确认系统的/etc/ssh/sshd_config里PermitRootLogin是no避免远程暴力破解风险。5.4 最后一个小技巧改完密码后立刻验证重置密码后先别急着把U盘扔一边。登录系统后运行下面几条命令确认账号状态sudo passwd -S 用户名 sudo chage -l 用户名 sudo journalctl -u systemd-logind --since today | tailpasswd -S会显示账号是锁定、无密码还是正常可用chage -l能看清密码过期时间日志则能确认登录校验过程没有异常报错。如果系统里有安全审计软件建议再触发一次实际登录确认审计日志中没有被判定为“异常凭据使用”的记录。整个过程跑通了这件事才算真正收尾。我个人实际操作中的体会是Linux版PE处理国产系统密码并不难难的是在动手前保持克制先看分区、先看算法、先确认锁定状态不要急着上去一顿操作。很多改完还登不进去的案例问题不是出在“不会改密码”而是出在“没搞清楚这个系统在登录时到底检查了什么”。把/etc/shadow、PAM策略和LVM这些底层的机制搞明白处理任何国产发行版都会从容很多。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑