如果系统还能正常登录,最省事的做法就是直接运行 sudo passwd root;要是把 root 密码彻底忘了,那就得进入 GRUB,修改启动参数后再重置。已经登录并且具备 sudo 权限的情况下,执行这条命令时,先输入当前用户的密码,然后把新的 root 密码连续设置两次就可以了。

能正常登录系统时,直接运行 sudo passwd root 就行;彻底忘了密码,必须进 GRUB 修改启动参数重置——没别的路。
已登录且有 sudo 权限:用 sudo passwd root 最稳
只要当前用户在 sudoers 里(比如属于 sudo 或 wheel 组),就能一步改掉 root 密码,不需要知道原密码。
- 执行
sudo passwd root后,先输的是你自己的密码(不是 root 的),输完回车 - 接着提示输入新 root 密码两次,输入时不显示字符,属正常现象
- 密码太短(<8 字符)或缺大小写字母/数字时,
passwd会报BAD PASSWORD,但默认仍会接受——除非系统启用了严格策略(如pam_pwquality) - 改完立刻生效,所有已打开的终端 session 不受影响,也不需重启服务
GRUB 下重置遗忘密码:rd.break vs init=/bin/bash
两者都绕过登录流程,但适用场景和风险不同:
rd.break(RHEL/CentOS/Fedora/Rocky/AlmaLinux 推荐): – 在linux行末尾加rd.break,启动后进switch_root:/#– 必须先mount -o remount,rw /sysroot,再chroot /sysroot,然后跑passwd root– SELinux 启用时,必须执行touch /.autorelabel,否则下次启动卡住init=/bin/bash(Ubuntu/Debian/Arch/RHEL 全系通用): – 把ro改成rw,末尾加init=/bin/bash– 启动即落在sh-5.1#,根目录已可写,直接passwd root– 同样要touch /.autorelabel,哪怕你不确定 SELinux 是否开启——省事但别跳过
改完登不进去?大概率不是密码没生效
常见真因和对应检查点:
/etc/shadow所在分区仍是只读:重置后没执行mount -o remount,rw /或mount -o remount,rw /sysroot- SELinux 上下文损坏:没打
/.autorelabel标记,或重置后没等 relabel 完成就强行登录 /boot在独立分区但没手动挂载:导致 initramfs 加载失败,系统卡在 early boot 阶段,根本到不了 PAM 认证环节- 某些云平台(如 AWS EC2、阿里云 ECS)禁用了 GRUB 编辑,VNC 控制台也受限——这种情况下,重置密码唯一可行路径是挂载系统盘到另一台实例修改
/etc/shadow
真正棘手的,往往不是命令敲错了,而是密码明明已经改完,系统却还是卡在登录界面进不去——这通常意味着问题不在 passwd 本身,而在更底层:挂载是否正确、SELinux 状态有没有处理好、分区状态是不是正常。如果这些环节没理顺,只盯着 passwd 看,基本解决不了问题。