CentOS 7丢失或忘记root密码的恢复流程
CentOS 7丢失或忘记root密码的恢复流程适用场景CentOS 7/RHEL 7拥有系统控制台/虚拟化平台的访问权限能自行进入GRUBroot密码丢失或被锁定故障现象无法使用已知密码登录root单用户模式下修改密码后重启仍提示Login incorrect输入用户名后不显示password而是直接返回login恢复流程进入GRUB编辑模式重启系统在GRUB菜单界面跳到第一行按e编辑GRUB的启动参数这个界面默认只停留五秒手速得快GRUB启动菜单下方有提示说明4. 进入后控制键盘方向键向下定位到以linux16开头的行修改内核启动参数将以linux16开头的行中的“ro”改为“rw”然后在行末空一格加上init/bin/bash selinux0修改完后按 Ctrlx 启动说明rw以读写模式挂载根文件系统init/bin/bash直接进入Bash绕过正常初始化selinux0本次启动禁用SElinux避免安全上下文校验若当前行位置不够可选择删除行内的“rhgb quiet”显示完整启动日志单用户模式下的操作等待系统启动出现 # 提示符后可依次输入执行以下命令mount-oremount,rw /# 确保根文件系统为可写sed-is|^root:[^:]*:|root::|/etc/shadow# 清空root密码字段passwd-ufroot# 强制解锁root账户synf# 同步数据到磁盘exec/sbin/init# 启动系统初始化进程登陆与重置密码系统重启后用户名输入root直接按回车即可登入root账户登陆成功后立即输入 passwd 命令设置新的密码技术背景/bin/bash 与 /bin/shinit/bin/sh 会进入POSIX兼容模式在此模式下 passwd 可能因交互限制导致写入失败建议使用 init/bin/bashSELinux约束CentOS 7默认启用SELinux若 /etc/shadow 的安全上下文不正确PAM会拒绝认证单用户修复时需显式处理SELinuxroot账户锁定/etc/shadow 中root字段以 或 * 开头表示锁定锁定状态下系统不会提示输入密码问题排查现象原因解决不提示 Passwdroot被锁定passwd -uf root密码正确但登录失败SELinux拦截selinux0 或 touch / .autorelable(在单用户模式下输入)修改后无效根分区只读mount -o remount,rw /新密码写入失败使用了sh改用init/bin/bash总结一下在CentOS 7环境中root密码丢失恢复完成后需满足以下三个条件1. 根文件系统以读写方式挂载2. root账户最终处于未被锁定状态3. SELinux约束被妥善处理通过 rw 、init/bin/bash 、 selinux0 启动参数可稳定进入单用户环境进行修复。该方法适用于物理机、虚拟机、及主流云平台示例