重置口令走的是哪条路
忘记 root 口令且仍有控制台(或带外管理)权限时,标准做法是打断正常启动流程,让系统停在 initramfs 里,此时根文件系统还没真正挂载成可写状态,可以在不经任何身份验证的情况下修改 /etc/shadow。RHEL 系与信创服务器普遍适用 rd.break 方式;这一操作本质上是本地物理权限即可提权,因此完成重置后必须按单位流程报备并复查安全基线。
基本信息
| 适用平台 | RHEL 系及信创服务器(Kylin / openEuler / UOS 服务器版) |
|---|---|
| 前提条件 | 有控制台、带外管理或虚拟机控制台权限 |
| 关键步骤 | 内核行追加 rd.break → 重挂 /sysroot 为可写 → chroot → passwd |
| SELinux 处理 | touch /.autorelabel 后重启,让策略重标上下文 |
| GRUB 口令 | 设置了引导口令的机器需先输入口令才能编辑内核行 |
| 风险等级 | 高:等于绕过身份鉴别,须授权与留痕 |
典型使用场景
- 口令交接遗漏,接手的运维无法登录root账户
- 老系统长期无人维护,口令记录丢失
- 测试环境快速恢复被误改的口令,避免重装
- 整机迁移后需要统一口令策略,先恢复登录权限再整改
- 演练与培训环境中演示口令恢复流程,验证救援路径可用
rd.break 重置步骤
rd.break 重置步骤
# 开机在 GRUB 菜单按 e 编辑,找到以 linux / vmlinuz 开头的那行
# 在行尾追加:rd.break (注意与前一项之间有空格),Ctrl+X 启动
mount -o remount,rw /sysroot # 把真实根文件系统重挂为可写
chroot /sysroot # 切入原系统环境
passwd root # 输入新口令;口令策略严格时需符合复杂度要求
touch /.autorelabel # SELinux 开启时必须做,否则新 shadow 上下文错误
sync # 落盘
exit # 退出 chroot
exit # 继续启动;首次开机会因重标记花较长时间重置后必做核查
重置后必做核查
getenforce # 确认 SELinux 状态;Enforcing 下重标记尤为重要
last | head -20 # 复核登录记录,确认行为可追溯
passwd -S root # 查看口令状态(是否被锁定、最后一次修改时间)
awk -F: '$2 ~ /^!/ {print $1}' /etc/shadow # 检查是否存在被锁定账号,避免交接后再次无法登录
grep -E '^PermitRootLogin' /etc/ssh/sshd_config # 顺带确认 root 远程登录策略是否符合基线常见现象与处置
| 现象 | 含义 | 处置 |
|---|---|---|
| 登录提示密码错误 | SELinux 上下文未重标导致被拒 | 进入单用户或救援环境执行 restorecon 或重标 |
| 首次开机耗时很长 | 正在进行 autorelabel 全盘重标 | 属正常现象,不要中途断电 |
| grub 无法编辑 | 设置了引导口令 | 先用引导口令解锁,或走救援介质 |
| passwd 提示口令太简单 | 口令策略生效 | 按复杂度要求重设,勿为省事关闭策略 |
| 重启后仍进不去 | 根分区未以可写方式重挂 | 确认执行了 remount,rw 后再 chroot |
口令重置属于高敏操作,仅限合法授权的系统维护范围内使用,完成后按单位流程报备,并检查是否存在未授权的同类操作痕迹。
SELinux 处于 Enforcing 时跳过 autorelabel,新写入的 shadow 文件安全上下文不正确,会出现『口令确实改了但登录始终失败』这类现象。