首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux救急实战:一文快速掌握重置root密码

Linux救急实战:一文快速掌握重置root密码

原创
作者头像
刘叨叨趣味运维
发布2026-01-14 08:53:36
发布2026-01-14 08:53:36
6160
举报

大家好,我是刘叨叨,一个致力于让碎片化技术系统性的运维人。

你是否遇到过这种“心跳时刻”:急需登录一台久未碰过的CentOS 7服务器,却突然发现——root密码想不起来了! 面对冰冷的登录提示符,是否感到一阵无奈?本文我将带你安全地破解它,掌握两种从单用户模式重置root密码的可靠方法,让你随时重获系统的最高权限。

一、这为什么是必备技能?

  1. 应对紧急状况:当所有普通登录途径失效时,这是最后的防线。
  2. 进行深度维护:需要绕过常规登录以执行底层系统修复。
  3. 深入理解系统:亲手操作一遍,你会对Linux启动和权限机制有更直观的认识。

重要前提:请仅在你拥有合法管理权的服务器上使用此方法。

二、核心原理:在启动链条上“巧妙介入”

想象Linux正常启动是一场接力赛:GRUB2 -> 内核 -> systemd -> 登录界面。我们的目标,就是在内核完成工作后,抢在systemd拉起登录服务之前,拦截并获取一个拥有root权限的Shell

这一切的开关,就在于编辑GRUB2传递给内核的启动参数

三、两种方法详解:选择你的路径

主要有两种思路,区别在于切入的时机和获得的Shell环境。下表帮你快速看清全貌:

特性对比

方法一:rd.break

方法二:init=/bin/sh

核心参数

在行尾添加rd.break

将ro改为rw2. 行尾添加init=/bin/sh

进入的环境

系统初始化早期的救援Shell (switch_root:/#)

一个以sh为PID 1的根Shell (sh-4.2#)

根分区状态

挂载在/sysroot下,默认只读

直接挂载为根,且已设为读写

操作复杂度

需多执行mount和chroot步骤

步骤更简单直接

安全性与可控性

⭐⭐⭐⭐⭐ 更高,原系统未完全初始化

⭐⭐⭐⭐ 直接操作真实根文件系统

适用发行版

主要适用于使用systemd和dracut构建initramfs的现代发行版,如:• RHEL/CentOS 7/8 及其衍生版( Rocky Linux, AlmaLinux)• Fedora• openEuler

几乎所有主流Linux发行版均支持,是一种更通用、经典的方法,适用于:• RHEL/CentOS 6/7/8 等• Ubuntu, Debian 及其衍生版• openSUSE, SLES• Arch Linux 等

一句话总结

“进入维修间操作”,更安全。

“直接在跑车上改装”,更快捷,需要对系统有一定了解。


四、具体操作步骤如下:

第一步. 重启服务器,当屏幕出现 GRUB2引导菜单(通常伴有倒计时)时,迅速按下键盘上的 e 键,进入一个文本编辑界面,这里是内核的启动参数。

第二步. 两种方法的具体操作步骤:

方法一:分步为营的 rd.break 法 (推荐)

这种方法在挂载真实根文件系统前中断,进入一个干净的救援环境。

1:修改启动参数

在编辑界面,找到以 linux16 开头的那一行,在末尾加一个空格,然后输入:

rd.break

接着,按下 Ctrl + x 来启动。

2:按顺序执行命令

系统会进入一个临时的救援Shell (switch_root:/#)。请严格按顺序执行以下命令:

代码语言:bash
复制
# 1. 将挂载的根分区重新挂载为可读写
mount -o remount,rw /sysroot
# 2. 将根目录切换到原始系统的根分区
chroot /sysroot
# 3. 现在,可以修改root密码了
passwd
# (根据提示输入两次新密码)
# 4. 处理SELinux安全标签,未开启可跳过
touch /.autorelabel
# 5. 退出chroot环境
exit
# 6. 重启服务器
exit
# 执行第二个 exit 后,系统将自动重启。

方法二:直截了当的 init=/bin/sh

这种方法让系统启动的第一个进程直接是Shell,非常直接。

1:修改启动参数

同样在 linux16 行进行两处修改:

  1. 找到 ro(表示只读),将其改为 rw(读写)。
  2. 在行尾添加:init=/bin/sh

完成后,按 Ctrl + x 启动。

2:执行命令

启动后,你会直接获得一个 sh-4.2# 提示符。

代码语言:bash
复制
# 1. 直接修改root密码
passwd
# (根据提示输入两次新密码)
# 2. 处理SELinux标签,未开启可忽略
touch /.autorelabel
# 3. 重启系统
exec /sbin/init
# 如有异常可以使用 `reboot -f` 命令强制重启

五、成功关键与避坑指南

无论选择哪条路,牢记以下两点,它们直接决定操作成败:

  1. 🛡️ 务必处理SELinux:CentOS 7默认启用SELinux安全模块(确认已关闭SELinux可跳过,一般会关闭)。修改密码后,必须执行 touch /.autorelabel 命令。这个操作会在根目录创建一个标记文件,系统下次启动时会据此重新为所有文件打上正确的安全标签。如果跳过,很可能导致新密码无法登录。
  2. 🔧 注意参数格式:在GRUB编辑界面添加参数时,确保每个参数之间用空格分隔,否则系统可能无法正确解析导致启动失败。

六、总结:从应急操作到深度理解

通过这次实战,我们学会的不仅仅是“密码重置”这个技巧,更触及了Linux启动流程的一个核心控制点——如何通过内核参数影响系统的初始化行为


关注【刘叨叨趣味运维】公众号,用有趣的方式,啃下最硬核的技术。咱们下期见!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、这为什么是必备技能?
  • 二、核心原理:在启动链条上“巧妙介入”
  • 三、两种方法详解:选择你的路径
  • 四、具体操作步骤如下:
    • 方法一:分步为营的 rd.break 法 (推荐)
    • 方法二:直截了当的 init=/bin/sh 法
  • 五、成功关键与避坑指南
  • 六、总结:从应急操作到深度理解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档