普通用户可用passwd直接改密码;root密码丢失需进单用户或recovery模式,通过GRUB编辑启动参数(如rd.break或init=/bin/bash)、重挂载根分区、chroot后执行passwd root重置,SELinux环境须touch /.autorelabel。

普通用户密码可直接用 passwd 修改;root 密码丢失必须进单用户模式或 recovery 模式重置,不能靠普通登录操作。
普通用户改密码:用 passwd 命令即可
只要能正常登录,无论是否是 root,都能用 passwd 改自己密码。非 root 用户只能改自己的,root 可以指定用户名改他人密码(如 passwd alice)。
- 当前用户改密码:直接运行
passwd,按提示输入旧密码和两次新密码 - root 改其他用户密码:运行
passwd username,无需旧密码,直接设新密码 - 新密码需满足系统策略(如最小长度、大小写、数字等),不满足会报错
passwd: password unchanged - 改完立刻生效,无需重启服务或重新登录(但已打开的 shell 会话仍保持原身份)
root 密码忘记:必须通过单用户模式绕过认证
Linux 启动时中断 GRUB 菜单,编辑内核启动参数,强制进入 init=/bin/bash 或 rd.break(RHEL/CentOS 7+)或 systemd.unit=rescue.target(较新发行版),才能挂载根文件系统并修改 /etc/shadow。
- GRUB 界面按
e编辑启动项,在linux行末尾添加rd.break(CentOS/RHEL 7/8)或init=/bin/bash(Ubuntu/Debian 旧版) - Ctrl+X 启动后,执行
mount -o remount,rw /sysroot(rd.break 下)或mount -o remount,rw /(init=/bin/bash 下) - 切换到根环境:
chroot /sysroot(rd.break)或直接操作(init=/bin/bash) - 运行
passwd root设新密码;若提示Authentication token manipulation error,说明/etc/shadow所在文件系统只读或 SELinux 上下文异常,需先touch /.autorelabel(SELinux 环境)再重启
不同发行版的关键差异点
操作流程相似,但启动参数、默认 init 进程、SELinux 处理方式不同,直接影响能否成功重置。
- Ubuntu/Debian:GRUB 中编辑
linux行,末尾加systemd.unit=rescue.target或init=/bin/bash;Ubuntu 20.04+ 默认启用systemd,rd.break不生效 - CentOS/RHEL 7/8:优先用
rd.break;若启用了 SELinux,重置后必须执行touch /.autorelabel,否则下次启动卡在 SELinux relabel 阶段 - Arch Linux:无预设 root 密码,通常靠 live USB chroot 修改;若已设密码且遗忘,同样走 GRUB 编辑 +
init=/bin/bash - 所有情况都要注意:如果 /boot 在独立分区且未自动挂载,可能需要先手动
mount /dev/sdX1 /boot(根据实际情况替换设备名)
重置后无法登录?检查这几个地方
密码改了但还是登不进去,大概率不是密码问题,而是权限、PAM 或 shell 配置被连带破坏。
- 确认
/etc/shadow中 root 行未被意外清空或格式错乱(如第二字段为空或含非法字符) - 检查
/etc/passwd中 root 的 shell 是否仍是/bin/bash(不是/sbin/nologin或不存在的路径) - SSH 登录失败?确认
/etc/ssh/sshd_config中PermitRootLogin未被设为no(重置密码不改变该配置) - 图形界面登录失败?可能是显示管理器(GDM/SDDM)限制 root 登录,这不是密码问题,而是安全策略
真正麻烦的从来不是输几行命令,而是进不了 GRUB、分不清 rd.break 和 init=/bin/bash 的适用场景、或者忘了 SELinux 那一行 touch。这些细节卡住的地方,往往比密码本身更难排查。


















