单用户模式是内核启动后、systemd接管前的应急root shell,非万能登录口;需按发行版修改grub参数(如rd.break或init=/bin/bash),并执行remount、passwd、autorelabel等关键步骤,否则重启失败。

单用户模式不是万能登录口,它本质是绕过登录的应急 Shell
单用户模式 ≠ 图形界面下的“管理员模式”,它是内核启动后、systemd(或 init)接管前的一个临时 root shell 环境,根文件系统默认只读,且不加载网络、服务、PAM 策略等——所以你不能用它 ssh 登录,也不能直接跑 systemctl start nginx。
- 它只在 GRUB2 可干预的物理机/虚拟机上有效;云服务器(如阿里云 ECS、腾讯云 CVM)若关闭了控制台引导干预,此法失效
- 现代 RHEL/CentOS 8+、Fedora、Rocky 默认启用 SELinux,跳过
touch /.autorelabel会导致重启后卡在 SELinux relabel 阶段,甚至无法完成登录 - Ubuntu/Debian 系统默认使用
init=/bin/bash而非single或1,加错参数会黑屏或报Kernel panic - not syncing: Attempted to kill init!
GRUB 编辑时改哪一行、加什么参数,取决于你的发行版
核心动作永远是:找到以 linux 或 linux16 开头的内核命令行,把只读挂载 ro 改成可写 rw,再追加启动控制参数。但具体加什么,得看 init 系统和安全机制:
- RHEL/CentOS 7/8/9、Rocky/AlmaLinux:推荐加
rd.break—— 它在 initramfs 阶段中断,能安全挂载/sysroot并chroot,天然适配 SELinux - Ubuntu/Debian(非 Live):加
rw init=/bin/bash,启动后执行mount -o remount,rw /,再passwd root - 旧版 CentOS 6 或禁用 SELinux 的系统:可加
rw single或rw 1,但需确认默认运行级别确实是 1
别手抖删掉 quiet splash 以外的其他参数(比如 rhgb、crashkernel),它们不影响密码重置,但删错可能引发内核 panic。
改完密码不执行这三步,大概率重启失败
很多人输完新密码就直接 reboot,结果进不了系统——问题出在文件系统状态和安全上下文没同步:
-
mount -o remount,rw /(或mount -o remount,rw /sysroot)必须执行,否则passwd写不进/etc/shadow -
passwd root成功后,若系统启用了 SELinux(getenforce返回Enforcing),必须运行touch /.autorelabel,否则重启时 SELinux 拒绝访问新密码哈希文件 - 退出方式要匹配入口:用
rd.break进的,得连输两次exit;用init=/bin/bash进的,应执行exec /sbin/init或exec /lib/systemd/systemd,而非reboot—— 后者可能跳过 systemd 的 clean shutdown 流程,导致 journal 日志损坏
替代方案比单用户更可靠:救援模式才是云环境首选
当 GRUB 菜单压根不出现(比如云平台无 VNC 控制台、UEFI Secure Boot 锁死),单用户模式就彻底失效。此时唯一可行路径是救援模式:
- 用同架构的 ISO(如 Rocky 9 ISO)启动,选
Rescue a Rocky Linux system - 挂载原系统到
/mnt/sysimage后,必须先chroot /mnt/sysimage,再运行passwd root—— 直接在救援环境里改/mnt/sysimage/etc/shadow会因密码哈希算法或 salt 不匹配导致验证失败 - CentOS/RHEL 系统还需检查
/mnt/sysimage/etc/default/grub中GRUB_CMDLINE_LINUX是否含rd.lvm.lv=...等逻辑卷参数,否则 chroot 后systemctl可能报 unit not found
真正容易被忽略的点是:所有操作都依赖于你能否正确识别根分区设备名(/dev/vda2 还是 /dev/nvme0n1p3)。lsblk + blkid 多看两眼,比硬背命令重要得多。










