可通过GRUB干预、rd.break、单用户模式、安装介质救援或编辑/etc/shadow五种方法重置Linux root密码,均需在启动阶段获取root shell并修改密码或清空shadow字段。
如果您已登录Linux系统但忘记了root密码,无法执行需要管理员权限的操作,则必须通过系统启动阶段干预来重置密码。以下是多种可行的重置方法:
一、使用GRUB编辑启动参数进入bash shell(通用方法)
该方法适用于大多数现代Linux发行版(如Ubuntu 20.04+、CentOS 7+、Debian 11+),通过修改内核启动参数,跳过正常初始化流程,直接获得可读写根文件系统的root shell环境。
1、重启系统,在GRUB启动菜单出现时,按住Shift键(BIOS模式)或Esc键(UEFI模式)调出菜单。
2、使用方向键选中要启动的内核条目,按e键进入编辑模式。
3、在编辑界面中,找到以linux或linuxefi开头的行,将光标移至行尾。
4、删除原有结尾参数(如ro quiet splash $vt_handoff),替换为rw init=/bin/bash。
5、按Ctrl + X或F10启动修改后的配置,系统将直接进入/bin/bash命令行。
6、执行mount -o remount,rw /,确保根分区以读写方式挂载。
7、运行passwd root,根据提示输入并确认新密码(输入过程不显示字符)。
8、执行exec /sbin/init或reboot -f强制重启系统。
二、使用rd.break中断启动流程(RHEL/CentOS/Fedora专用)
此方法在内核初始化早期挂载真实根文件系统前中断,进入临时救援Shell,能安全处理SELinux标签,适用于启用SELinux的系统。
1、重启系统,在GRUB菜单中选中目标内核,按e键编辑。
2、找到以linux16或linux开头的行,在行尾添加空格后追加rd.break。
3、按Ctrl + X启动,系统将停在switch_root:/#提示符下。
4、执行mount -o remount,rw /sysroot,使真实根分区可写。
5、执行chroot /sysroot,切换到原始系统根环境。
6、运行passwd,按提示两次输入新root密码。
7、若系统启用SELinux,执行touch /.autorelabel以触发安全上下文重标记。
8、依次执行exit退出chroot,再执行exit重启系统。
三、进入单用户模式(runlevel 1)重置密码
该方法引导系统进入最小化维护环境,自动获得root权限且无需验证,兼容性广,尤其适合Ubuntu/Debian系。
1、重启系统,在GRUB菜单中选择Advanced options for Ubuntu(或其他对应高级选项)。