如果 Linux 系统还能正常登录,最简单高效的方式就是直接执行 sudo passwd root;如果已经完全忘记 root 密码,就需要进入 GRUB,修改启动参数后再进行密码重置。在当前账户已登录且具备 sudo 权限的前提下,运行这条命令时,先输入当前用户的登录密码,然后连续两次设置新的 root 密码即可完成修改。

系统可以正常登录时,直接运行 sudo passwd root 是最快捷的方法;如果 root 密码完全遗忘,就只能通过进入 GRUB 修改启动参数来重置,没有更直接的替代方案。
已登录且有 sudo 权限:用 sudo passwd root 最直接稳妥
只要当前用户已加入 sudoers 配置中(例如属于 sudo 或 wheel 组),通常就可以直接修改 root 用户密码,而无需先知道原来的 root 密码。
- 执行
sudo passwd root后,系统首先要求输入的是当前用户自己的密码,而不是 root 的密码,输入后按回车继续 - 随后会提示连续输入两次新的 root 密码,输入过程中终端不会显示字符,这是 Linux 的正常安全机制
- 如果密码过短(如少于 8 位)或缺少大小写字母、数字等组合,
passwd可能提示BAD PASSWORD,但在默认配置下通常仍会接受;除非系统启用了更严格的密码策略,例如pam_pwquality - 密码修改成功后会立即生效,当前已经打开的终端会话通常不会受到影响,也不需要重启系统服务
GRUB 下重置遗忘密码:rd.break 与 init=/bin/bash
这两种 Linux root 密码重置方法都可以绕过常规登录流程,但适用的发行版环境和操作风险并不相同:
rd.break(更推荐用于 RHEL/CentOS/Fedora/Rocky/AlmaLinux): – 在linux行末尾追加rd.break,系统启动后会进入switch_root:/#– 必须先执行mount -o remount,rw /sysroot,再运行chroot /sysroot,之后再使用passwd root重设密码
– 如果系统启用了 SELinux,必须执行 init=/bin/bash(适用于 Ubuntu/Debian/Arch,也兼容 RHEL 系列): – 将启动参数中的ro改为rw,并在末尾添加init=/bin/bash– 启动后会直接进入sh-5.1#环境,此时根目录通常已经可写,可以直接执行passwd root
– 同样建议执行
touch /.autorelabel,否则下次启动时很可能出现卡顿或无法正常进入系统
touch /.autorelabel,即使你无法确认 SELinux 是否开启,也最好不要省略这一步
修改后还是无法登录?多数情况下不是密码没改成功
Linux 修改 root 密码后仍无法登录,常见原因通常在以下几个方面:
/etc/shadow所在分区依旧是只读状态:重置密码后没有执行mount -o remount,rw /或mount -o remount,rw /sysroot- SELinux 上下文异常或损坏:没有创建
/.autorelabel标记,或者系统还未完成 relabel 过程就尝试强制登录 /boot位于独立分区但没有手动挂载:可能导致 initramfs 无法正常加载,系统停留在 early boot 阶段,根本还没进入 PAM 认证流程- 部分云服务器平台(如 AWS EC2、阿里云 ECS)可能禁用了 GRUB 编辑功能,VNC 控制台权限也有限——在这种情况下,重置 root 密码最可行的方法通常是将系统盘挂载到另一台实例,再手动修改
/etc/shadow
真正麻烦的地方,往往不是 Linux root 密码重置命令输错了,而是密码明明已经修改完成,系统依然停留在登录界面无法进入。这通常说明问题并不在 passwd 命令本身,而是在更底层的系统状态上,例如文件系统是否正确挂载、SELinux 是否妥善处理、相关分区是否处于正常可写状态。若这些关键环节没有处理好,只反复检查 passwd,通常很难真正解决登录失败的问题。
