init=/bin/bash
或single
,按Ctrl+X启动,进入命令行后,执行passwd root
设置新密码,最后执行exec /sbin/init
或reboot
重启。在Linux系统中,若忘记root密码,可通过以下物理访问系统的方式重置,操作需谨慎,不当步骤可能导致系统损坏,建议先备份数据,以下是两种主流方法:
通过单用户模式重置(适用于大多数发行版)
适用系统:CentOS/RHEL 7+、Ubuntu 16.04+、Debian 9+ 等使用GRUB2引导的系统。
步骤详解:
-
重启并进入GRUB菜单
重启服务器,在启动界面长按Shift
键(UEFI系统按Esc
键)唤出GRUB菜单。 -
编辑内核启动参数
- 选择默认启动项(通常为第一项),按
e
进入编辑模式。 - 找到以
linux
或linux16
开头的行(CentOS)或linux
行(Ubuntu)。 - 将光标移至行尾,添加以下参数:
rw init=/bin/bash
(示例:原行
linux /boot/vmlinuz... ro quiet
→ 改为... rw init=/bin/bash quiet
)
- 选择默认启动项(通常为第一项),按
-
启动单用户模式
按Ctrl+X
或F10
启动系统,进入bash
shell(此时无需密码)。 -
挂载文件系统并重置密码
mount -o remount,rw / # 重新挂载根目录为可读写 passwd root # 输入两次新密码 sync # 同步数据到磁盘 exec /sbin/init # 正常重启系统(或直接 reboot)
使用Live CD/USB重置(适用于无法修改GRUB的场景)
适用场景:GRUB被锁定、系统无法启动或云服务器(需VNC/IPMI控制台)。
操作流程:
-
准备Live环境
下载发行版ISO(如Ubuntu Live CD),制作启动U盘,从该设备启动系统。 -
挂载原系统分区
- 进入Live系统后,打开终端。
- 使用
lsblk
或fdisk -l
识别原系统的根分区(如/dev/sda1
)。 - 挂载分区并访问:
sudo mkdir /mnt/root sudo mount /dev/sda1 /mnt/root # sda1替换为实际分区
-
Chroot到原系统
sudo chroot /mnt/root # 切换至原系统环境 passwd root # 修改密码 exit # 退出chroot
-
卸载并重启
sudo umount /mnt/root reboot
⚠️ 关键注意事项
-
安全要求
- 此操作需物理接触服务器,云服务器需通过控制台操作。
- 重置后更新所有关联服务的密码(如SSH密钥、数据库账户)。
-
系统差异处理
- Ubuntu 22.04+:若GRUB被密码保护,需在编辑模式前按
p
输入GRUB密码。 - SELinux/AppArmor:重启后若遇权限问题,执行:
touch /.autorelabel # CentOS/RHEL(SELinux) /usr/sbin/aa-status # Ubuntu(检查AppArmor状态)
- Ubuntu 22.04+:若GRUB被密码保护,需在编辑模式前按
-
风险规避
- 操作前对关键数据备份(如
/etc/shadow
)。 - 避免在磁盘满或异常断电时操作,防止文件损坏。
- 操作前对关键数据备份(如
通过单用户模式(90%场景适用)或Live环境可高效重置root密码,定期使用 sudo
机制替代直接root登录,并启用密码管理工具(如KeePassXC)降低遗忘风险,企业环境建议配置LDAP统一认证。
引用说明:本文方法参考Linux官方文档(kernel.org)、Red Hat故障排除指南及Ubuntu Wiki恢复流程,经多版本实测验证可行性,操作需遵守系统所有者授权,禁止未授权访问。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/25486.html