你有没有遇到过这种情况?openEuler 服务器 root 密码弄丢了,网上教程一通照着操作,GRUB 加上rd.break,Ctrl+X 启动,结果直接正常进系统,死活进不去救援 shell! 我之前踩过这个坑,折腾好久才发现 openEuler 做了安全加固,rd.break 钩子经常失效。今天分享两套经过真机实测的本地重置 root 密码方案,注意:只支持物理控制台、虚拟机控制台,SSH 远程完全无法操作!

本文为对外公开精简实战笔记,生产环境操作务必谨慎。

前置重要说明

  1. 只能本地控制台操作,SSH 远程连接无法完成密码重置。重置 root 之后,可以再修改系统内其他普通用户密码。
  2. GRUB 界面按e编辑内核参数,修改仅本次启动生效,不会写入磁盘配置文件,重启就恢复原样,不用担心改坏引导文件
  3. 修改内核参数时原有参数root=crashkernel=、LVM 相关参数千万不要删除,不然系统直接找不到根分区。
  4. 新增内核参数前面必须加空格,全部放在同一行,不要回车换行;按End键快速跳到行末尾,操作效率更高。
  5. openEuler24.03 版本,编辑 GRUB 需要输入账号密码,默认用户名root,密码openEuler#12

方式一:init=/bin/sh 重置 root 密码(优先推荐)

  1. 重启服务器,在 GRUB 引导菜单,选中正常 openEuler 启动项,按下e进入内核参数编辑页面。
  2. 找到以linux开头的那一行:
  • 把参数 ro 修改为 rw
  • 跳到这一行的最后面,加一个空格,追加参数:init=/bin/sh

修改片段示例:

  1. 按下 Ctrl+X 或者 F10,使用修改后的配置启动。
  2. 启动成功后,会落到 shell 提示符 sh‑5.1#,代表已经进入单用户救援环境。

执行重置密码全套命令

1.设置root新密码,输入2遍,注意OpenEuler对密码强度有要求

passwd

2.重中之重!很多人修改完比吗依旧登录失败就是漏掉了这一条命令

touch /.autorelabel

3.不要使用reboot!不要使用reboot -f进行重启,使用如下命令重启

exec /sbin/init

SELinux 重新标记是什么?

执行完exec /sbin/init之后,会看到 SELinux 重新标记的进度页面,这不是报错,属于正常现象

系统检测到/.autorelabel文件,会全盘修复文件安全上下文。

千万不要断电、强制重启,等待进度走到 100%,系统会自动重启。磁盘越大,等待时间越久。 如果跳过这一步,就算密码设置正确,也会提示密码错误,无法登录 root 账号。

等待标记完成,系统来到登录界面,就可以使用刚刚设置的新 root 密码登录。

方式二:init=/bin/bash 重置 root 密码

整体操作流程和上面init=/bin/sh几乎一模一样,仅仅内核末尾参数不一样。

  1. GRUB 按e编辑 linux 内核行
  2. ro改为rw
  3. 行末尾增加空格,追加参数:init=/bin/bash

片段示例:

  1. Ctrl+X启动进入救援 shell。

后续执行命令完全一致:

1.passwd   

2.touch /.autorelabel 

3.exec /sbin/init

为什么不推荐 rd.break 方式?

网上大量教程教 rd.break 重置密码,但是在 openEuler 22.03 实测,经常出现设置完参数,直接进入正常系统,无法进入switch_root救援 shell。

根源是 OpenEuler 做了 dracut、systemd 安全加固,rd.break 钩子很容易失效。 优先使用上面两种init=/bin/sh / init=/bin/bash方案,兼容性更好。

实操避坑总结

  1. 只可以本地控制台,SSH 远程行不通;虚拟机要打开虚拟机控制台操作。
  2. ro 一定要改成 rw,只读模式下修改密码会报Authentication token manipulation error
  3. touch /.autorelabel不能省略,SELinux 上下文错乱会导致密码正确也登录失败。
  4. 退出救援环境用exec /sbin/init,禁止直接reboot或者强制断电,有文件系统损坏风险。
  5. 参数追加前面必须留空格,不要换行,否则内核识别不到新增参数。

你在维护 openEuler 的时候还遇到过哪些启动救援的坑?欢迎评论区一起交流。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐