Linux单用户模式重置密码:CentOS与Ubuntu实操步骤
忘记Linux登录密码时,单用户模式是最直接的本地重置方式。
它的核心思路是在GRUB启动菜单中临时修改内核参数,让系统以root权限进入一个不要求密码的维护Shell,再用passwd命令改密码。
本文适用于能物理接触服务器或通过云控制台VNC进入系统的场景,CentOS 7/8和Ubuntu 18.04/20.04的操作路径会分开说明。
操作前必须确认的两件事
第一,必须有本地控制台权限。 单用户模式需要在开机时中断GRUB引导,远程SSH无法操作。
物理服务器接显示器键盘,云服务器用VNC或救援控制台。
第二,确认系统是否启用SELinux。 CentOS默认开启,重置密码后需要额外处理,否则可能无法正常启动。
可以在能登录时执行getenforce查看,或者进入单用户模式后执行。
如果服务器有重要数据,操作前建议对当前系统盘做快照或备份。
修改内核参数和密码文件属于系统级变更,虽然常规操作风险可控,但保留回滚点更稳妥。
CentOS 7/8 进入单用户模式重置密码
中断GRUB并编辑内核参数
开机后出现GRUB菜单时,按键盘上下方向键选中默认启动项,按e进入编辑模式。
如果菜单一闪而过,可以在开机时连续按Esc或Shift尝试唤出。
在编辑界面找到以linux16或linux开头的行,在行尾追加以下参数:
rd.break enforcing=0
rd.break让系统在initramfs阶段暂停并进入紧急Shell,enforcing=0临时关闭SELinux强制模式,避免密码修改被拦截。
按Ctrl+X或F10启动,系统会停在switch_root:/#提示符。
挂载真实根文件系统并重置密码
此时根目录还是临时的,需要挂载真实系统分区:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
输入两次新密码。
如果提示密码过于简单,可以忽略警告继续,或者设置符合复杂度要求的密码。
处理SELinux并重启
密码改完后,必须让SELinux重新标记文件上下文,否则重启后可能卡在登录界面或服务启动失败:
touch /.autorelabel
exit
exit
第一条exit退出chroot,第二条exit继续启动。
系统重启时会自动执行SELinux重打标签,这个过程可能需要几分钟,期间不要强制断电。
Ubuntu 进入恢复模式重置密码
Ubuntu 18.04及以上版本通常使用恢复模式(Recovery Mode)。
开机时按住Shift或Esc进入GRUB菜单,选择Advanced options for Ubuntu,再选择带(recovery mode)的条目。
在恢复菜单中,选择root选项,按回车进入root Shell。
如果系统提示输入root密码而你没有,说明恢复模式被限制,需要先编辑GRUB临时添加init=/bin/bash,操作方式与CentOS类似,在linux行尾追加rw init=/bin/bash,按Ctrl+X启动。
进入Shell后,根文件系统通常已挂载为可读写。
如果执行passwd提示只读,先执行:
mount -o remount,rw /
然后重置密码:
passwd root
如果还要重置普通用户,把root换成对应用户名。
完成后执行reboot重启。
重置后如何验证是否生效
系统重启后,用新密码登录root或目标用户。
登录成功后,执行以下命令确认账户状态:
passwd -S root
输出中如果显示P,表示密码已设置且可用。
如果显示L或NP,说明账户被锁定或密码为空,需要检查/etc/shadow文件。
再检查SELinux状态:
getenforce
如果输出Enforcing且系统运行正常,说明重打标签已生效。
如果输出Disabled,说明SELinux未启用,不影响使用。
容易踩坑的几个地方
密码改完忘记执行touch /.autorelabel。 CentOS系统重启后可能无法正常进入系统,表现为卡在启动日志或登录循环。
补救方法是再次进入单用户模式,挂载根分区后创建该文件。
根分区挂载为只读。 执行passwd时会报Authentication token manipulation error。
解决方法是先执行mount -o remount,rw /sysroot或mount -o remount,rw /。
云服务器没有VNC权限。 部分云厂商默认关闭控制台VNC,需要在控制台重置密码或使用救援模式。
这种情况下单用户模式无法操作,应优先使用云平台提供的密码重置功能。
GRUB菜单不显示。 可能是GRUB_TIMEOUT设置为0。
可以在能进入系统时修改/etc/default/grub,把GRUB_TIMEOUT改为5,然后执行grub2-mkconfig -o /boot/grub2/grub.cfg(CentOS)或update-grub(Ubuntu)。
如果已经无法登录,只能通过安装介质引导进入救援模式处理。
关于密码重置的两个常见疑问
单用户模式重置密码会影响系统里的文件吗?
不会删除用户数据,但修改了/etc/shadow中的密码哈希。
如果启用了SELinux,重打标签会遍历文件系统更新安全上下文,不改变文件内容。
重置后SSH无法登录,提示权限被拒绝怎么办?
先确认/etc/ssh/sshd_config中PermitRootLogin是否为yes或prohibit-password。
如果配置为no,root不能通过SSH登录,需要用普通用户登录后su切换。
另外检查/etc/ssh/sshd_config中PasswordAuthentication是否被设为no,如果是,需要改为yes并重启sshd服务。
单用户模式重置密码属于本地维护手段,适合物理机和有VNC权限的云服务器。
操作时注意GRUB参数的正确性、根分区的读写挂载以及SELinux重打标签这三个关键点,基本可以顺利完成。
如果系统启用了全盘加密或GRUB密码,单用户模式无法直接进入,需要先解除加密或输入GRUB密码。