适用于大多数 Linux 发行版(Ubuntu、CentOS、Debian 等),无需第三方工具,需物理接触服务器或系统启动权限。
步骤 1:重启系统并进入 GRUB 引导菜单
- 重启系统,看到启动画面时,快速按下
Esc
、Shift
或E
(不同系统按键不同,可多试几次)。 - 进入 GRUB 菜单后,选择要修改的系统内核选项(通常第一个),按
e
进入编辑模式。
步骤 2:修改内核启动参数
- 找到以
linux
或linux16
或linuxefi
开头的行(可能显示为ro quiet splash
),将ro
改为rw init=/bin/bash
(部分系统需改为rw single
)。<BASH>
linux /vmlinuz-xxx root=/dev/sda1 **rw init=/bin/bash**
- 目的:以可读写(
rw
)模式启动,并直接进入单用户模式(无需密码)。
- 目的:以可读写(
步骤 3:挂载文件系统并修改密码
- 按下
Ctrl+X
或F10
启动到命令行界面。 - 重新挂载根分区为读写模式(部分系统已通过参数自动挂载):
<BASH>
mount -o remount,rw /
- 修改 Root 密码:
<BASH>
passwd root # 输入两次新密码
- 确保 SELinux 重新标记(如系统使用 SELinux):
<BASH>
touch /.autorelabel # CentOS/RHEL 需要此步骤
- 重启系统:
<BASH>
exec /sbin/init # 或直接按 Ctrl+Alt+Delete
其他可能场景处理
场景 1:系统使用 systemd(如 Ubuntu 18.04+、CentOS 7+)
- 在 GRUB 编辑模式中,修改
linux
行末尾为:<BASH>
rw init=/bin/bash
- 若提示文件系统错误,需指定根分区:
<BASH>
mount -o remount,rw /sysroot chroot /sysroot passwd root touch /.autorelabel # 仅 SELinux 系统需要 exit reboot
场景 2:使用 Live CD/USB 修改密码
- 用 Linux Live USB 启动系统。
- 挂载原系统的根分区(需替换
/dev/sda1
为实际分区):<BASH>
sudo mount /dev/sda1 /mnt
- 修改密码:
<BASH>
sudo chroot /mnt passwd root exit sudo reboot
注意事项
- 安全限制:
- 要求物理访问机器,虚拟机需控制台权限。
- 若启用了全盘加密(如 LUKS),需先解密磁盘。
- Secure Boot 可能阻止此操作,需在 BIOS/UEFI 中临时关闭。
- 生产环境:
- 修改密码后检查系统日志(
/var/log/secure
或/var/log/auth.log
)。 - 启用 SSH 密钥认证或
sudo
权限,减少依赖 Root 密码。
- 修改密码后检查系统日志(
示例流程图
<PLAINTEXT>
重启 → GRUB菜单 → 修改启动参数 → 进入单用户模式 → 挂载rw → passwd → 重启生效
通过上述步骤,可快速恢复 Root 权限,建议操作后加固系统安全! 🔐