在运维场景中,“忘记 root 密码” 是最常见的紧急状况之一。多数教程只教 “操作步骤”,却很少讲 “底层原理”。本文从启动流程、参数逻辑出发,详解 Ubuntu 密码重置全过程,并对比 CentOS 等发行版的差异,帮你真正掌握核心运维技能。
一:Ubuntu 系统密码重置:GRUB修改启动参数和Recovery Mode两种方法
方法1,推荐(最常用,适用于所有 Ubuntu 版本,步骤简洁):
前置知识:GRUB 的核心角色
GRUB(Grand Unified Bootloader)是 Linux 的启动引导器,负责加载内核、传递启动参数。密码重置的核心逻辑是:通过修改 GRUB 参数,绕过登录流程,直接获取系统控制权。
步骤 1:进入 GRUB 编辑模式
重启 Ubuntu 系统,系统启动过程中按下“shift”,在GRUB 启动菜单界面(显示内核版本列表的界面),选中要启动的内核版本。

选中 Advanced options for Ubuntu,按回车,进入第二张图的 “内核选择子菜单”。

选中你要修改的具体内核启动项(比如 Ubuntu, with Linux 6.17.0-4-generic,或 Ubuntu, with Linux 6.17.0-4-generic (recovery mode),然后按 “e”键 ,即可进入该内核的启动参数编辑界面(后续就能修改linux行的参数,用于重置密码等操作),不要按回车,如果按了回车请从头再来。

步骤 2:修改 GRUB 启动参数(核心操作)
在编辑界面中,找到以 linux 开头的内核启动配置行(通常包含 /vmlinuz-xxx 字样)。

1. 原始参数示例(需调整的部分):
linux /vmlinuz-6.17.0-4-generic root=/dev/mapper/ubuntu--vg-v--0 ro
recovery nomodeset dis_ucode_ldr ...
2. 修改后参数(关键调整):
删除 recovery(移除恢复模式的功能限制)
删除 nomodeset(若显卡兼容性良好,可删除;否则保留以避免启动卡住)
在 dis_ucode_ldr 后添加 quiet splash rw init=/bin/bash
最终修改后示例:
linux /vmlinuz-6.17.0-4-generic root=/dev/mapper/ubuntu--vg-v--0 dis_ucode_ldr quiet splash rw init=/bin/bash

步骤 3:启动修改后的系统
参数修改完成后,按 Ctrl+X 或 F10,启动带有新参数的内核。
系统会直接进入 bash 命令行(无需登录验证)。
步骤 4:重置 root 密码并重启
在 bash 命令行中,执行以下操作:
1. 修改root密码(输入时无字符显示,正常输入即可)passwd root
2. 强制重启系统(使新密码生效)reboot-f
passwd qwe 修改qwe账号的密码,会提示输入新密码,然后再次确定新密码,完成后重启设备。

-
为什么要这么改?
很多人会 “照抄步骤”,但理解参数逻辑才能应对复杂场景。以下是关键参数的作用(按必要性分类):
必须配置的参数
|
参数 |
作用 |
|---|---|
rw |
将根文件系统从默认的 |
init=/bin/bash |
替换系统第一个进程( |
什么是 “第一个进程”?
Linux 系统启动的流程是:内核加载完成 → 启动第一个进程(PID=1)→ 第一个进程启动其他所有服务/程序
这个 “第一个进程” 就像公司的 “总经理”,是所有后续工作的发起者:
-
它的默认名称通常是
init(早期系统)或systemd(现代系统,如 Ubuntu 16.04+、CentOS 7+)。 -
它会负责启动登录管理器(让你输入密码的界面)、网络服务、桌面环境等所有系统功能。
“替换第一个进程为 bash” 是什么意思?
当你在 GRUB 参数中加入 init=/bin/bash 时,相当于告诉系统:“内核加载完成后,别启动默认的‘总经理’(init/systemd)了,直接启动 bash(命令行终端)作为第一个进程。”
此时:
bash会获得 “总经理” 的身份(PID=1),拥有系统最高权限。
-
因为跳过了默认的 “总经理”(init/systemd),原本由它启动的 “登录验证程序” 也不会运行 —— 这就是为什么你能直接进入命令行,无需输入密码。
-
可选配置的参数
|
参数 |
作用 |
适用场景 |
|---|---|---|
quiet splash | quiet
隐藏启动日志, |
追求启动界面美观时 |
nomodeset |
临时禁用显卡驱动 —— 避免启动时因显卡兼容问题(如黑屏、花屏)卡住 |
显卡驱动异常时 |
recovery |
启动 “恢复模式” —— 会限制部分系统功能(密码重置无需此限制) |
建议删除 |
方法二(图形化菜单引导,操作更直观):
Ubuntu Server 的恢复模式(Recovery Mode)更适合系统使用全盘加密(LUKS)或加密 LVM,进入后需手动执行 mount -o remount,rw /,但菜单引导会提示相关操作,更易排查,rw init=/bin/bash,rw 参数确保根分区启动时就是可写的,无需额外执行 mount -o remount,rw /
这一步时候,不要按e,直接回车进入recover mode模式

选择root,按下回车,出现提示后再次按下回车,进入维护页面。

mount -o remount,rw / #这里修改文件系统为读写模式
passwd qwe #修改系统中qwe用户的密码

三、centos和其他 发行版
不同发行版核心逻辑一致(修改引导参数绕开登录),但因安全机制、启动流程不同,细节有差异。
(一)CentOS/RHEL 系列(以 CentOS 7 为例)
方法一,推荐(更安全可控,自动重建 SELinux ):
步骤差异:
-
进入 GRUB:重启这一步走时按
e进入编辑模式。

核心参数:在 linux16 行末尾添加 rd.break(替代 Ubuntu 的 init=/bin/bash)。

修改后,按下ctrl+x重启
- 后续操作(进入 bash 后):
重新挂载根目录为可写
mount-o remount,rw /sysroot# -
2切换到chroot环境(模拟根目录)chroot /sysroot# -
修改root密码passwd root# -
关键:更新SELinux安全上下文(CentOS特有),避免因权限不匹配导致 “登录失败,系统启动异常"touch /.autorelabel# 5. 退出并重启exitreboot -
touch /.autorelabel 是否必须运行: -
检查 SELinux 状态(CentOS 系统)sestatus # 输出含“SELinux status: enabled”→需执行touch /.autorelabel;输出“disabled”→无需执行

恭喜你,此时已经完成重置密码。
方法二:
-
按
e进入编辑模式后,找到设置语言的地方,如LANG=en_US.UTF-8,在后面追加rw single init=/bin/bash -
然后按ctrl+x重启系统,进入bash页面后修改密码,和乌班图类似。

上面两种方法都可以重置密码,centOS 作为企业级发行版,需兼顾大量旧版本系统的运维场景,因此保留了多套跨版本的密码重置方法
-
两种方法的核心差异
|
对比维度 | rd.break
方法 | rw init=/bin/bash
类方法(以 |
|---|---|---|
| 启动阶段 |
在「initramfs 阶段」中断(系统尚未切换到真实根文件系统,处于早期启动流程) |
直接替换「init 进程」,尝试启动后直接进入 shell(系统已尝试挂载根文件系统) |
| 根文件系统状态 |
初始根为 |
直接将根文件系统以 |
| 兼容性 |
对 LVM、加密卷、复杂存储场景兼容性极好(早期阶段操作,存储驱动已加载但系统未完全启动,挂载逻辑更可靠) |
仅对「简单分区(非 LVM、非加密)」友好;若根是 LVM / 加密卷,可能因系统启动流程提前中断,导致存储挂载失败 |
| 步骤复杂度 |
步骤稍多(需 |
步骤更简洁(直接修改密码,无需额外挂载操作) |
(二)Debian 系列(与 Ubuntu 的细微区别)
-
基本流程与 Ubuntu 一致,但旧版本中:
-
无需删除
recovery参数(Debian 的恢复模式兼容性更好); -
部分版本需添加
single参数(进入 “单用户模式”,替代init=/bin/bash)。
-
(三)Fedora 系统
-
操作逻辑类似 CentOS,但因使用新版 GRUB2:
-
内核行以
linux开头(而非 CentOS 的linux16); -
无需
rd.break,直接用init=/bin/bash即可; -
同样需处理 SELinux 上下文(与 CentOS 逻辑相同)。
-
(四)底层原理升华:密码重置的本质是什么?
Linux 正常启动流程是:BIOS/UEFI → GRUB → 内核 → init进程 → 登录管理器。
密码重置的核心是 **“打断默认启动流程”**,实现两步关键突破:
- 进程层面
:让内核不启动默认的
init进程(负责启动所有服务),而是直接启动bash(或进入单用户模式),从而跳过 “登录验证” 环节。 - 文件系统层面
:将根文件系统从 “只读(
ro)” 改为 “可写(rw)”,才能修改存储密码的核心文件/etc/shadow。
五、注意事项与风险提示
- 硬件兼容问题
:若删除
nomodeset后出现 “黑屏 / 花屏”,重启后需重新添加该参数(部分 NVIDIA 显卡必须保留此参数)。 - UEFI Secure Boot 限制
:开启 Secure Boot 的系统会阻止修改 GRUB 参数,需先进入 BIOS 关闭该功能。
- 数据安全警示
:此操作证明 “物理接触服务器即可绕过密码”,生产环境需开启BIOS 密码 + GRUB 密码双重保护。
- LVM / 加密分区
:若系统使用 LVM(逻辑卷管理)或加密分区,需确保分区已正确挂载(GRUB 通常会自动处理,老旧系统可能需手动挂载)。
总结
无论是 Ubuntu、CentOS 还是其他 Linux 发行版,密码重置的核心逻辑均为 “打断默认启动流程,绕过登录验证,并确保根文件系统可写” —— 通过修改 GRUB 参数,让系统直接启动 Shell 获取最高权限,或进入特殊维护模式。不同发行版的差异源于启动流程设计、安全机制(如 SELinux) 及存储架构(如 LVM、加密卷) 的适配性。
如果看到这里你还是无法解决问题,比如单用户模式被禁用,recovery mode被隐藏,可以通过 Live CD进行重置,live cd类似我们重装windows时候的PE系统,比如你听过的老毛桃、U启通,可以直接在内存中运行,不再详细描述,具体操作可查阅资料。
2025最新完整图文教程&spm=1001.2101.3001.5002&articleId=153267392&d=1&t=3&u=3f946d776c7748e1a439260f03d09974)
1万+

被折叠的 条评论
为什么被折叠?



