System auth文件修复
可以,完全可行!
使用 init=/bin/sh (或 init=/bin/bash) 是另一种非常经典且有效的进入单用户/紧急模式的方法。它的原理是直接告诉内核:“跳过正常的 systemd 初始化流程,直接运行 /bin/sh 作为第一个进程”。
对于 Anolis OS 8.6,这种方法同样有效,但操作细节略有不同(主要是挂载和 SELinux 处理)。
以下是使用 init=/bin/sh 修复 Anolis OS 8.6 的具体步骤:
🚀 第一阶段:引导进入 Shell
-
重启并拦截 GRUB
- 重启电脑/虚拟机。
- 在 GRUB 菜单出现时,迅速按
e。
-
修改引导参数
- 找到以
linux或linux16开头的行。 - 在该行末尾添加一个空格和以下参数:
init=/bin/sh enforcing=0 - 解释:
init=/bin/sh:直接启动 Shell,不加载 systemd。enforcing=0:必须加。因为跳过了正常初始化,SELinux 上下文可能混乱,临时关闭它可避免权限报错。
- 找到以
-
启动
- 按
Ctrl + x或F10。 - 系统会很快启动,直接给你一个
sh-5.0#或bash-4.4#的提示符。
- 按
🛠️ 第二阶段:手动挂载与修复 (关键区别)
注意:使用 rd.break 时,系统会自动帮你挂载好 /sysroot。但使用 init=/bin/sh 时,根文件系统通常是以“只读”方式挂载的,且没有挂载到标准位置,你需要手动挂载。
请依次执行以下命令:
1. 重新挂载根目录为读写模式
这是最关键的一步。如果不执行,你无法保存修改。
mount -o remount,rw /
/,而不是 /sysroot,因为 init=/bin/sh 模式下 / 就是根目录)
2. 备份原文件
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak.init-fix
3. 清理错误的 PAM 配置
执行以下两条 sed 命令删除错误行:
# 1. 删除单独以 unlock_time 开头的行
sed -i '/^unlock_time=300/d' /etc/pam.d/system-auth
# 2. 删除断裂的 auth 行
sed -i '/^auth required pam_faillock\.so.*preauth silent deny=5$/d' /etc/pam.d/system-auth
4. 验证修复
tail -n 15 /etc/pam.d/system-auth
5. 标记 SELinux 重标 (非常重要)
因为你跳过了正常启动流程且修改了文件,必须让系统在下次正常启动时重标 SELinux。
touch /.autorelabel
6. 强制重启
由于 init=/bin/sh 跳过了 systemd,直接输入 reboot 命令可能会失效或报错。你需要强制重启:
- 方法 A (推荐):如果是在虚拟机或云控制台,直接使用界面的“重启”按钮。
- 方法 B (命令):尝试执行以下命令强制重启:
或者
exec /sbin/init(如果reboot -freboot没反应,直接按虚拟机的重启键或物理机的重启键是最稳妥的)
⚖️ rd.break vs init=/bin/sh 对比
| 特性 | rd.break (推荐) |
init=/bin/sh (备选) |
|---|---|---|
| 挂载状态 | 自动挂载到 /sysroot (只读) |
根目录 / 已挂载 (只读) |
| 挂载命令 | mount -o remount,rw /sysroot |
mount -o remount,rw / |
| Chroot | 需要 chroot /sysroot |
不需要 (直接在根环境) |
| 环境变量 | 保留部分 dracut 环境 | 极简环境,变量很少 |
| 重启方式 | exit 两次即可正常重启 |
可能需要强制重启 (reboot -f) |
| 适用场景 | RHEL/CentOS/Anolis 8+ 标准做法 | 通用 Linux,旧系统或 rd.break 失效时 |
💡 结论
你可以放心使用 init=/bin/sh。
对于你的 Anolis OS 8.6 桌面版:
1. 它在操作上稍微简单一点点(不需要 chroot)。
2. 唯一要注意的坑是:一定要执行 mount -o remount,rw /,否则修改保存不了!
3. 一定要加 enforcing=0 和创建 /.autorelabel,否则重启后可能因为 SELinux 问题进不去图形界面。
只要记住了 mount -o remount,rw / 这一步,这两种方法效果是一样的。祝你修复成功!