Linux忘记root密码?从原理到实操的重置全攻略
干这行最怕什么不是系统崩了不是流量被打满而是某天登录服务器时发现自己把root密码给忘了。机房连夜跑过去Console接上屏幕亮着手边一堆维护手册却连系统都进不去。我在过去几年运维经历里至少在四五台CentOS、Ubuntu和嵌入式板卡上干过这种重置root密码root密码破解的活儿深知这事看起来像玄学掰开揉碎其实就是一套启动参数与根文件系统挂载的博弈。这篇文章就把这套方法从原理到实操讲透覆盖RHEL系、Debian系和嵌入式Linux三大场景顺带把重置之后密码过期、安全加固这些收尾事项也一并说清楚。适合所有手里有Linux设备、做过系统管理、或者动不动就把密码忘在脑后的同行参考。1. 先把思路理清楚重置root密码靠的是什么原理1.1 你绕不开的shadow文件与PAM认证链路Linux的root密码并不是存成明文而是经过加密后写在 /etc/shadow 这个文件里。root用户登录时系统会走PAM认证链路比对你输入的密码经过相同hash处理后是否与shadow里的记录一致。理解了这条链路所谓的“忘记root密码”就变成了一个问题在有物理访问或者管理控制台权限的前提下怎么把一个我们知道的密码写进 /etc/shadow。实际操作里无非两条路线要么让系统以特殊方式启动进入一个不需要完整登录流程的root shell要么通过Live CD等外部系统把原来的根分区挂载上来直接修改shadow文件。两条路线的本质都是“在root身份下改shadow”区别只在于怎么拿到这个root shell。1.2 几种重置方案的适用边界网上流传的方法不少单用户模式、救援模式、rd.break、init/bin/bash听着都差不多但各自适用场景完全不同。方案适用系统核心思路踩坑风险单用户模式SysVinit老系统、部分systemd系统以单用户进入默认runlevelsystemd下可能仍需输入密码兼容性差rd.breakRHEL/CentOS 7/8/9、Fedora打断dracut初始化流程在initramfs阶段进入shell需要手挂根文件系统SELinux标记需处理init/bin/bashUbuntu/Debian、部分嵌入式内核直接拉起bash跳过systemd与登录流程需手动把根分区变成可读写Live CD/USB chroot几乎全系列外部系统挂载根分区后chroot修改需要准备启动介质对LUKS加密盘无能为力uboot传参嵌入式Linux通过bootloader给内核传不同参数不同板卡差异大只读rootfs需额外处理清楚边界之后出问题时才不会手忙脚乱。下面分开讲我最常用、也最推荐掌握的三套打法。1.3 一台“能物理访问”的机器是前提有一点必须说明所有重置手段都有一个隐含前提你能接触到设备的控制台。不管是通过iDRAC/IPMI这样的带外管理还是直接跑到机房接显示器在虚拟化平台上则是通过VNC/Console窗口。换句话说你要么物理掌控设备要么虚拟化控制台在你手里。如果你面临的是远程SSH断连、又没有带外管理通道的情况那真心建议平时就把sudo备份账户、密钥对这类逃生通道留着别等锁死了再想办法。除了合法管理员对自己或本单位授权设备进行恢复的场景之外任何针对他人系统的“破解”行为都是违规的这点必须守住。2. RHEL/CentOS系最顺手的rd.break重置法2.1 从GRUB菜单到dracut shell的完整路径CentOS 7之后系统启动用的是GRUB2内核由GRUB先加载接着进入initramfs也就是dracut生成的initramfs镜像这个阶段负责加载磁盘驱动、组装根设备、准备切换到真正的根文件系统。rd.break要打断的就是这个流程让我们停在根文件系统尚未完全挂载好的dracut shell里。具体操作重启系统出现GRUB菜单时选中默认内核那一项按 e 进入编辑模式。找到以 linux16 或 linux 开头的那一行通常是很长的一行里面包含 root、rhgb、quiet 等参数把光标移到行尾留一个空格追加 rd.break。按 CtrlX 或 F10 启动。系统会在initramfs阶段停下来进入一个提示符类似 switch_root:/# 的shell。这个shell环境已经很接近目标系统了但此时真正的根文件系统其实挂在 /sysroot 目录下而且大多情况下是只读状态。如果你直接执行 passwd大概率会报错。所以下一步的挂载操作是必做项。2.2 mount、chroot、passwd三步交接进入switch_root shell后依次执行以下命令switch_root:/# mount -o remount,rw /sysroot switch_root:/# chroot /sysroot bash-4.2# passwd root第一句是把 /sysroot 重新以读写方式挂载。为什么要重挂载一次因为initramfs阶段为了文件系统一致性默认以只读方式挂载不重挂的话后续所有写操作都不会生效而且系统不会给你任何直观报错很多新手在这上面莫名其妙卡很久。第二句 chroot /sysroot 意思是把根目录切换成目标系统真正的根文件系统。执行之后你现在看到的 /etc、/home、/var 就是原来系统里的目录了passwd、chage 这些命令也换成了目标系统里的版本。第三句就是常规修改root密码Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.输入两遍新密码即可。这里建议把密码复杂度设置得有点样至少包含大写、小写、数字和特殊字符。重置密码后要退出chroot但别直接重启先处理SELinux的问题。2.3 SELinux那一步为什么不能省RHEL系默认开启SELinux因为修改/etc/shadow并不经过正常的会话流程新写入的文件可能没有正确的SELinux安全上下文或者上下文标记不匹配。这时候如果有一步没做重启后系统很可能陷入一个很尴尬的状态SELinux报错、登录卡住、服务起不来甚至可能出现密码改好了却始终认证失败的情况。正确的收尾操作是在chroot环境里执行bash-4.2# touch /.autorelabel这个空文件的作用是告诉系统下次启动时对整个文件系统做一次SELinux重新标记。标记过程会花几分钟服务器配置差的可能要十几分钟屏幕上会有红色的百分号进度提示别看到进度条就走开了等它跑完自动重启。如果你确定当前系统根本没开SELinux那这步可以跳过但对企业里跑着业务的机器我从来都是无脑touch反正只是多等几分钟稳比快重要。之后依次输入 exit 退出chroot再 exit 退出switch_root shell系统会继续原来的启动流程。2.4 我遇到过的几个意外情况这个方案我用了很多次成功率很高但也不是没有意外。第一是输入 rd.break 后直接卡在缺少驱动的地方。这种情况多见于特殊硬件阵列卡或NVMe设备由于intramfs本身驱动缺失无法识别根设备。此时先在BIOS/直通模式确信磁盘能被系统识别或者换一个带完整驱动的救援ISO来完成操作。第二是执行 passwd 时提示 token manipulation error。这个报错多半是文件系统还挂在只读模式又或者/etc/shadow本身权限异常。可以用 mount | grep sysroot 确认挂载状态再用 ls -l /etc/shadow 和 /etc/passwd 检查owner是否root。正常权限shikishadow文件owner为root、group为root、权限为000或640。第三是完成后重启系统一直停在SELinux的relabel过程看起来像卡死。其实只要它停留在Auto-relabeling阶段耐心等就好我的经验是普通机器5到10分钟就结束如果超过20分钟还不动再考虑是不是有文件系统损坏。中间千万不要强行断电否则后果更难收拾。3. Ubuntu/Debian系init/bin/bash与Live USB双保险3.1 修改GRUB启动参数进入“无systemd”的root shellUbuntu这个系最大的特点是用initramfs阶段后直接交给systemd但如果我们不想经过systemd可以直接在GRUB里让内核拉起一个bash绕开系统初始化里所有可能卡住的服务U、过期策略全部用chage把策略落到具体身份组上还可以把自动过期提醒写进登录后的mcotd脚本。5.2 为什么我始终建议关掉root远程密码登录密码重置是“最后手段”但如果你把root当成日常登录账户且开着密码登录那等于把最后手段也变成了攻击面。即使密码设成,Tr0ub4dor3这种在公网上风险依然不小因为攻击者可以无限次尝试并利用各种漏洞提权。我现在的习惯是ssh直接禁止root密码登录sshd_config里把PermitRootLogin设为prohibit-password同时给管理员账号配置SSH密钥。root密码只留到本地控制台或带外管理时使用。这么一改就算远程被人扫到SSH端口没有私钥也进不来root远程爆破的威胁直接归零。这套配置在绝大多数发行版上都通用改完记得 systemctl restart sshd 或 service ssh restart。5.3 日志里那些“反复失败的登录尝试”意味着什么重置完密码后我还会顺带看一眼 /var/log/secureRHEL系或 /var/log/auth.logDebian系里的Failed password记录。不要小看这些日志它们经常能提前告诉你哪台机器被爆破盯上了哪些IP在反复试探。如果发现大量来自陌生IP的暴力尝试除了确认密码强度还应该考虑装fail2ban或者干脆把SSH端口从22改成高位端口。6. 最后一篇几个容易在本故障中踩中的隐形坑6.1 LUKS全盘加密会让所有重置方法失效如果系统安装时开启了全盘加密LUKSrd.break和init/bin/bash全都无用因为根分区数据在解密前根本看不到。这种机器最稳妥的办法是在解密之前进入救援环境用已知的LUKS passphrase挂载加密卷后再chroot改密码。也就是说如果生产环境用了LUKS你的“最后一根救命稻草”取决于LUKS密码是否还记得——别再把它和root密码一起忘掉了。6.2 fstab异常会自动把你送到emergency mode有些机器在重启重置密码时会因为/etc/fstab里某个挂载项失效而自动进入emergency mode屏幕上还提示输入root密码。如果你刚重置过密码用新密码尝试进不去的概率不低原因可能是SELinux上下文未更新或者shadow文件权限异常。这时候就老老实实按CtrlD让它继续尝试多半能绕过或者在emergency shell里手动检查 /etc/fstab 和挂载状态。6.3 BIOS密码挡住你进GRUB编辑还有一个你猜不到的问题——很多服务器BIOS/固件层面就设置了开机密码GRUB编辑功能也被锁住。这就导致即使你知道所有Linux层的骚操作根本走不到修改启动参数那一步。遇到这种情况只能联系机房或设备提供方处理固件密码没有任何软件层面的捷径。所以企业在物理机运维交接时固件密码的交接往往比系统密码更重要。6.4 别忘了“都重置完之后验证一遍”每次重置完root密码我都不急着关console。重启到登录界面后先SSH远程登录一次再本地控制台登录一次确认业务关键服务都正常起来最后把新密码写进密码保险库才算真正结束。很多故障之所以演变成“二次事故”就是重置密码后太乐观忘了验证结果业务半夜起来报错人又得回机房跑一趟。末尾的一点经验重置root密码这件事本身不难难的是把整套流程想周全。我在实际操作中体会到每一次重置都是一次对整个环境敏感度的审视——分区加密没有、SELinux关没关、系统有没有接带外管理、日志是否在正常记录。如果你在平时就愿意花半小时把这些情况摸清楚真到了深夜炸机房的时候心里是有底的。最后再分享一个小技巧处理完这类问题顺手把操作时间、使用的方法、遇到的异常都记进运维手册哪怕只是几句话下一次再碰上同样问题翻笔记比重新踩坑快得多。

相关新闻

C++ opencv之视频读写(VideoCapture,VideoWriter)的实现

C++ opencv之视频读写(VideoCapture,VideoWriter)的实现

前言视频读写看起来是 OpenCV 里最简单的几个 API:cv::VideoCapture 打开,循环 read(),cv::VideoWriter 写出去。但落到工程里翻车点极多:播放器能播的 MP4,isOpened() 却返回 false;写出来 0 字节&#xf…

2026/10/12 14:07:56 阅读更多 →
Flutter鸿蒙离线同步实战:sql_crdt的CRDT适配与落地

Flutter鸿蒙离线同步实战:sql_crdt的CRDT适配与落地

直接说结论:如果你们团队正在做 Flutter 跨端应用,又被离线同步、多端冲突合并折磨得头疼,那sql_crdt这个库值得花点时间认真研究。它把 CRDT 那一套理论上很复杂的一致性模型,直接封装成了 SQLite 里能跑、Dart 里能调的东西。而…

2026/10/12 1:18:22 阅读更多 →
pcapsipdump 0.2实战:SIP/RTP会话级抓包与排障指南

pcapsipdump 0.2实战:SIP/RTP会话级抓包与排障指南

简介:pcapsipdump 是一款基于 libpcap 开发的开源 SIP 嗅探工具,主要面向 VoIP 运维、SIP 协议研发以及网络抓包分析人员,用于解决 SIP/RTP 会话抓包与后续分类存储的问题。它能够监听指定网络接口,实时捕获流量并自动识别 SIP/RT…

2026/10/12 15:36:21 阅读更多 →

最新新闻

ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化

ArangoDB 官方 Docker 镜像部署实战:实例启动、认证配置、资源限制与数据持久化

文档 【免费下载链接】docs Documentation for Docker Official Images in docker-library 项目地址: https://gitcode.com/gh_mirrors/docs/docs 点击查看 免费下载 导读:本文以 docker-library 官方文档仓库中的 arangodb/content.md 为骨架&#xff…

2026/10/13 1:57:17 阅读更多 →
Litmus 混沌实验实战 FAQ 深度解读:网络故障注入、目标圈定与实验全生命周期管理

Litmus 混沌实验实战 FAQ 深度解读:网络故障注入、目标圈定与实验全生命周期管理

云原生运维可观测性 【免费下载链接】litmus Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGei…

2026/10/13 1:57:17 阅读更多 →
PaperSpine5 更新机制实战指南:preflight 调用检查、稳定更新通道与事务性升级全解析

PaperSpine5 更新机制实战指南:preflight 调用检查、稳定更新通道与事务性升级全解析

AI 技能AI 写作人工智能深度研究AI 应用 【免费下载链接】PaperSpine PaperSpine5 — local-first, evidence-bound paper research, writing, figures, review and delivery. Download: https://wubing2023.github.io/PaperSpine/v5/ 项目地址: https://gitcode.co…

2026/10/13 1:57:17 阅读更多 →
Java+MySQL学生宿舍管理系统课设:数据库设计、Swing界面与避坑指南

Java+MySQL学生宿舍管理系统课设:数据库设计、Swing界面与避坑指南

简介:这是一个基于MySQLJavaSwing开发的学生宿舍管理系统课程设计资源,面向高校计算机相关专业学生,可用于数据库课程设计、Java桌面应用开发或毕业设计初期参考,也可作为自学Java GUI编程的完整实例。资源包共含334个文件&#x…

2026/10/13 1:57:16 阅读更多 →
实车路试注意事项:从出发前准备到数据记录与应急处理

实车路试注意事项:从出发前准备到数据记录与应急处理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:57:16 阅读更多 →
论文查重降重红黑榜:这几类工具纯属浪费时间

论文查重降重红黑榜:这几类工具纯属浪费时间

每年三四月,论文查重降重就成了毕业生绕不开的关卡。有人花几百块买教训,有人熬几个通宵手动改红字,还有人查重结果和学校终检差了十万八千里。这篇红黑榜不吹不黑,把常见的坑和值得用的工具一次说清楚,看完能帮你省下…

2026/10/13 1:56:16 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →