当能正常登录时,直接使用sudo passwd root就能修改root密码,无需重启系统或进入GRUB。那如果出现了“Authentication token manipulation error”报错,这时候就需要检查文件系统是否处于读写状态,以及SELinux上下文是否正确。要知道,出现这个问题通常是密码文件的属性有问题,也有可能是根目录空间已满。这时候可以执行“lsattr /etc/passwd /etc/shadow”命令来查看存放用户和密码的文件(/etc/passwd和/etc/shadow)的属性。如果这两个文件中有“i”属性,那表示该文件不能被修改,不能删除或重命名,也无法创建链接文件,更不能写入数据,只有管理员用户才能设置或清除此属性。另外,如果“lsattr”结果中没有限制增加或修改的属性,那就可能是根分区空间不足了,可以通过“df -h”命令来查询根分区的使用率,然后删除根分区下不需要的文件。而处理方法就是用“chattr”命令将“i”权限撤销,然后再修改密码。如果文件属性为“i”,就执行“chattr -i /etc/passwd /etc/shadow”;如果文件属性为“a”,就执行“chattr -a /etc/passwd /etc/shadow”。(可选)如果对修改过属性的文件有安全要求,需要设置相应的属性,那就重新设置。比如要设置文件属性为“i”,就执行“chattr +i /etc/passwd /etc/shadow”;要设置文件属性为“a”,就执行“chattr +a /etc/passwd /etc/shadow”。最后,还可以通过“lsattr /etc/passwd /etc/shadow”命令来查看修改后的文件属性。

能正常登录时,直接用 sudo passwd root
只要当前用户具备 sudo 权限,修改root密码就如同执行一条简单的命令,无需重启系统、无需进入GRUB、也无需触碰内核参数。
- 运行
sudo passwd root,输入的是你自己的密码(不是 root 的) - 接着按提示输两遍新密码;太短或缺字符会报
BAD PASSWORD,但依然能设成功 - 改完立刻生效,已打开的终端 session 不受影响
- 别用
su -切到 root 再跑passwd—— 多一步且依赖 root 原密码,纯属绕路
passwd root 报错 Authentication token manipulation error 怎么办
这个错误不是密码输错了,而是文件系统没挂成读写态,或者 SELinux 上下文坏了。
- 如果是在 GRUB 里用
rd.break进去的,必须先执行mount -o remount,rw /sysroot,再chroot /sysroot,否则/etc/shadow所在分区仍是只读 - SELinux 启用的系统(RHEL/CentOS/Rocky/AlmaLinux 默认开),改完密码后一定要
touch /.autorelabel,否则下次启动卡在 relabel 阶段,根本进不了系统 - Ubuntu/Debian 系统虽默认关 SELinux,但若手动启过,同样要打标;不确定就
touch /.autorelabel,多一次没坏处
GRUB 里该加 rd.break 还是 init=/bin/bash
选哪个取决于发行版和你对风险的容忍度:前者更安全但步骤多,后者快但容易漏挂载。
rd.break:RHEL 系列(CentOS 7/8、Rocky、AlmaLinux)最新推荐;进入的是 initramfs 环境,/还没挂上,必须chroot /sysroot才能操作真实系统init=/bin/bash:Ubuntu/Debian/Arch/RHEL 全支持;直接落在根文件系统上,mount -o remount,rw /就能改密码,但若/boot是独立分区,可能因未挂载导致后续 init 失败- 别混用:比如在
rd.break环境下执行passwd root而不chroot,改的是内存里的假 shadow,重启就丢
重置后还是登不进去,先查这三件事
密码明明改了却登录失败,90% 是以下某个环节漏了,而不是密码本身有问题。
/etc/shadow所在分区是否真被挂为读写?用mount | grep " / "确认输出含rw- SELinux 是否启用?运行
getenforce,返回Enforcing或Permissive就得touch /.autorelabel /boot是否独立分区?如果是,rd.break模式下它默认没挂载,chroot前得手动mount /dev/sdXn /sysroot/boot(Xn 替换为你实际设备)
passwd root 没用。