Linux中root密码忘记了怎么办,重置root密码方法

适用于 Rocky/CentOS/RHEL/Fedora/Anolis

以Rocky 10为例

1. 重启系统

  1. 重新启动 Linux 系统
  2. 看到 GRUB 引导菜单时,立即按e进入编辑模式

Snipaste_2025-12-27_14-54-13-tmmQjHQuCXJijoyyhPTUeYOzchWNDjQd.png

2. 修改内核启动参数

进入编辑界面后,找到以 linuxlinuxefi 开头的那一行(通常是第二行)。
在这行文字的末尾删去多余参数添加以下参数

init=/bin/bash

示例:

# 找到以下内容:
linux ($root)/vmlinuz-6.12.0-55.37.1.el10_0.x86_64 root=/dev/mapper/r1_bogon-root ro crashkernel=20-64G:256M,64G::512M resume=UUID=...
# 删除一部分并在末尾添加
linux ($root)/vmlinuz-6.12.0-55.37.1.el10_0.x86_64 root=/dev/mapper/r1_bogon-root ro init=/bin/bash

Snipaste_2025-12-27_14-54-22-BNJPMKGtzmRVJUhKxQPJKOGenuTjoDXa.png

3. 启动进入 Root Shell

根据底部提示使用ctrl+xF10启动,进入root shell
Snipaste_2025-12-27_14-54-31-YMKMfBwcHuNgjNpBfuKkTMyGUEpVWMXb.png

4. 挂载根文件系统为可写

系统会启动并进入一个根 shell,但此时文件系统是只读的。
执行以下命令:

mount -o remount,rw /

5. 修改密码

使用以下命令修改密码:

passwd root

6. 触发 SELinux 重新标记

Rocky Linux 10 默认启用 SELinux,它通过安全上下文(security context)控制文件访问权限。
当使用 init=/bin/bash 绕过正常引导流程时,SELinux 可能无法正确识别文件的安全标签,所以需要让 SELinux下次启动时重新扫描并标记所有文件的上下文。
touch /.autorelabel 就是这个标志文件,它会触发一次完整的 SELinux relabeling 过程。

touch /.autorelable

7. 重启

使用以下命令重启系统:

exec /sbin/init

重启后使用新密码登陆即可