CentOS单用户模式重置root密码无需LiveCD
机房灯亮着,键盘噼啪作响,root密码却死活敲不对,这种尴尬谁遇谁慌。手里没有LiveCD,也没有启动U盘,机器里跑着重要业务,重启进救援模式似乎成了唯一出路。别急着拔硬盘,CentOS自带的单用户模式就能原地改密,全程五分钟,不插外设,不丢数据,步骤比装个浏览器还简单。

为什么单用户模式能直接改密
Linux运行级别1就是传说中的single user mode,内核把系统拉到最简环境,只挂根分区,不启网络,不验证PAM,直接给root shell。换句话说,只要你能摸到物理机或者能控制GRUB菜单,系统就认你当老大。CentOS7/8/Stream默认没给GRUB加密码,这才让“本地提权”变成“自助改密”。
动手之前先确认三件事
1 服务器必须直连显示器或带外管理口,远程SSH到不了单用户。
2 文件系统不能开只读锁,万一启用了加密盘,得先输LUKS密钥。
3 最近做过内核升级,记得挑最新条目进菜单,别选错旧内核。

CentOS7/8/Stream操作路径
重启机器,看见GRUB黑底绿字界面,快速按一下e键,光标落在linux16或linux行。把光标拖到行尾,找到原来写的“rhgb quiet”,删了也行,留着也行,紧接着空一格写rd.break,然后Ctrl+x启动。系统会卡在“switch_root:/#”提示符,这就是临时根。
此时真实根被挂到/sysroot,并且默认只读,得先给写权限:
mount -o remount,rw /sysroot
切过去:
chroot /sysroot

现在就像正常系统里一样,直接passwd:
passwd root
输两遍新密码,看见“successfully”就稳了。如果系统之前开了SELinux,必须打一条touch /.autorelabel,否则重启会卡policy加载。最后敲两次exit,机器继续引导,root就能用新密码登录。
CentOS6老机器略有差异
GRUB菜单按e后,找到kernel那一行,行尾空一格写single,回车再按b启动。系统直接给root shell,无需chroot,passwd改完就reboot,没有SELinux那堆破事,比新版还快。
远程IDC没显示器怎么办
大部分托管商提供KVM over IP或虚拟媒体,浏览器里就能弹出控制台,步骤与物理机完全一致。要是只有SSH,那就真没辙,单用户模式不启网卡,必须求人按键盘。
常见翻车点与急救
1 输rd.break时多敲个空格,内核找不到入口,系统会挂应急模式,再重启重新编辑即可。
2 忘记remount直接passwd,提示只读文件系统,返回去重新mount -o remount,rw /sysroot就能继续。
3 设完密码立刻把/.autorelabel漏掉,重启SSH能连但部分服务起不来,再进一次单用户补touch即可。
把漏洞堵上:给GRUB加锁
改完密码别高兴太早,下次别人也能照方抓药。执行
grub2-setpassword
系统会在/boot/grub2/user.cfg生成加密字符串,重启后再想编辑菜单,得先输用户名和密码,物理安全才算闭环。
CentOS单用户模式重置root密码无需LiveCD,就是趁内核给你shell的五分钟窗口,把/sysroot重新挂成读写,chroot进去passwd,再贴个.autorelabel防SELinux罢工。记住顺序:重启→e→rd.break→remount→chroot→passwd→touch→exit→exit,全程不插盘,数据不搬家,手快五分钟,手慢两行泪。
下次再被密码锁在门外,别急着找U盘,先试试这招,省下的时间够泡一壶茶。
