Ubuntu默认锁定root账户,重置root密码无效;需先挂载根文件系统为可写(mount -o remount,rw /),再用passwd修改管理员用户密码,并执行sync确保写入硬盘后正常启动。

为什么不能直接 passwd root?
在 Ubuntu 里,root 登录默认就是关着的,root 账户通常处于锁定状态(sudo passwd -l root)。也正因为如此,单独去重置 root 密码,对日常管理基本没有实际意义。真正该关注的,是那个具备 sudo 权限的管理员账号,比如安装系统时创建的 ubuntu、admin,或者你后来自己设置的用户名。要是误执行了 passwd root,结果往往也不会改变:既不能正常通过 su 切换到 root,也没法直接用 SSH 登录 root,甚至还可能把原有的安全策略搞乱。
进 recovery mode 后必须先 mount -o remount,rw /
恢复模式下根文件系统默认以只读(ro)挂载,直接运行 passwd username 会报错:Authentication token manipulation error。这不是密码输错,是写入 /etc/shadow 失败。
mount -n -o remount,rw /是通用写法,-n避免写入/etc/mtab(该文件在 recovery 下可能不可写)- Ubuntu 20.04+ 统一用
/作挂载点,不用猜/dev/sda1等设备名 - 执行后可快速验证:
touch /test && rm /test,不报错说明已可写
不知道用户名时怎么找?
如果你连管理员用户名都忘了,别试常见名字(如 user、admin),直接查 /etc/passwd:
cut -d: -f1 /etc/passwd | grep -E '^[a-z][a-z0-9_]{2,}$'
这条命令过滤出符合常规命名规则的非系统用户(UID ≥1000)。输出里第一个看起来像人名的(比如 alice、dev)大概率就是你装系统时建的管理员账户。
- 避免用
cat /etc/passwd全看——里面混着几十个系统账户,容易看花眼 - 不要依赖
ls /home:有些用户家目录被删了但账户还留着;有些用户家目录在别处(如/srv/users) - 如果输出为空,说明可能用了 LUKS 加密或网络认证(LDAP/SSO),这种场景 recovery mode 不适用
重置完不重启就退出,会导致密码没生效
执行完 passwd username 并确认后,很多人就顺手关机,或者直接按下 Ctrl+Alt+Del,以为这就改好了。可实际情况往往是,下次登录时密码还是旧的。原因就在于:passwd 改动的是磁盘上的 /etc/shadow,但 recovery mode 下的 init 进程并没有触发 sync,缓存里的数据很可能还没来得及真正写回磁盘。
- 务必执行
sync命令强制刷盘 - 再用
exec /sbin/init或systemctl default正常启动(不是reboot,后者在部分 UEFI 固件下会跳过 init 流程) - 如果选的是 recovery 菜单里的 “Resume normal boot”,要等它弹出确认框并按
OK,否则可能卡在 emergency.target
最易忽略的点:改完密码却没 sync,或者以为按了回车就算重启成功,其实新密码根本没写进硬盘。