当前位置: 首页 > news >正文

Linux小课堂: 系统救援模式操作指南:修复启动问题与重置Root密码

系统启动故障现象

系统重启后无法正常进入操作界面,循环输出错误信息,包括 SELinux权限错误(permission denied)NA refix SElinux 等提示

用户输入账户密码仍无法登录,系统卡死在错误循环状态

救援模式核心作用

当系统因配置修改(如SELinux策略冲突)导致无法启动,或用户遗忘Root密码时,可通过救援模式进行修复

该模式提供临时Root权限,支持关键配置调整与密码重置

进入救援模式操作流程


1 ) 启动中断:

系统启动初期(显示内核选择界面时),按下键盘 e 键进入内核参数编辑界面。

2 ) 修改内核参数:

定位到以 linux16 开头的行,进行以下修改:

  • ro(只读模式)替换为 rw(读写模式)。
  • crashkernel 参数前追加:
    rw init=/sysroot/bin/sh  
    
    修改后完整参数示例:
    linux16 /vmlinuz... rw init=/sysroot/bin/sh crashkernel=auto...  
    

3 ) 启动救援模式:

Ctrl + X 组合键,系统以修改后的参数启动,进入 emergency mode(紧急模式)

关键修复操作

1 ) 切换根目录
执行命令将 /sysroot 挂载为根目录:

chroot /sysroot  

验证权限:

whoami  # 输出应为 root  

2 ) 关闭SELinux(永久生效)

编辑配置文件:

vi /etc/selinux/config  

SELINUX=enforcing 改为 SELINUX=permissive(仅记录警告不拦截操作)

保存退出(:wq

注意:setenforce 0 为临时关闭,重启失效;配置文件修改为永久生效方案

3 ) 重置Root密码

执行密码重置命令:

passwd root  

按提示输入 至少8位的新密码,并二次确认

输出 password updated successfully 表示成功

若未切换root,需指定用户:passwd 用户名

4 ) 处理SELinux上下文(可选)

若未关闭SELinux,需重建文件系统标签:

touch /.autorelabel  # 重启后自动重标记权限  

5 ) 退出与重启

1 ) 退出救援环境:

exit        # 或 Ctrl + D  

2 ) 重启系统:

reboot  

重启后系统正常加载,使用新Root密码登录

6 ) 修复结果验证

登录系统:

  • 输入 root 账户及新密码,确认登录成功

检查SELinux状态:

getenforce  # 输出应为 Permissive(已关闭)  

服务恢复:

  • 访问NGINX服务器及论坛页面,确认服务正常运行

SELinux配置解析代码操作示例

1 )方案1

import { readFileSync, writeFileSync } from 'fs';  // 读取SELinux配置  
const parseSELinuxConfig = (path: string): { SELINUX: string } => {  const configText = readFileSync(path, 'utf-8');  return configText  .split('\n')  .filter(line => !line.startsWith('#'))  .reduce((config, line) => {  const [key, value] = line.split('=');  if (key && value) config[key.trim()] = value.trim();  return config;  }, {} as Record<string, string>);  
};  // 修改SELinux模式  
const disableSELinuxPermanently = (configPath: string) => {  const config = parseSELinuxConfig(configPath);  if (config.SELINUX !== 'permissive') {  config.SELINUX = 'permissive';  const newConfig = Object.entries(config)  .map(([k, v]) => `${k}=${v}`)  .join('\n');  writeFileSync(configPath, newConfig);  console.log('SELinux已永久禁用');  }  
};  // 调用示例  
disableSELinuxPermanently('/etc/selinux/config');  

关键说明:

  1. 救援模式本质:通过内核参数init=/sysroot/bin/sh跳过系统服务,直接加载Shell
  2. 密码重置条件:需物理接触服务器(云服务器需VNC控制台)
  3. SELinux管理:生产环境建议保持enforcing,通过audit2allow生成策略而非直接关闭

2 )方案2

import { Injectable } from '@nestjs/common';
import { execSync } from 'child_process';
import { writeFileSync } from 'fs';@Injectable()
export class SystemRecoveryService {// 禁用SELinux的配置方法 disableSELinuxPermanently(): void {const configPath = '/etc/selinux/config';const configContent = execSync(`cat ${configPath}`).toString();// 替换enforcing为permissive,保留原文件其他内容 const updatedContent = configContent.replace(/SELINUX=enforcing/g,'SELINUX=permissive',);// 写入修改后的配置 writeFileSync(configPath, updatedContent);console.log('SELinux permanently set to permissive.');}// 重置root密码的方法 resetRootPassword(newPassword: string): void {try {// 使用chroot环境模拟救援模式操作 execSync(`echo 'root:${newPassword}' | chroot /sysroot chpasswd`, {stdio: 'inherit',});console.log('Root password updated successfully.');} catch (error) {throw new Error(`Password reset failed: ${error.message}`);}}// 创建.autorelabel文件以重建SELinux上下文 createAutorelabelFile(): void {execSync('touch /.autorelabel');console.log('.autorelabel file created for SELinux relabeling.');}
}

代码说明:

  • disableSELinuxPermanently:直接修改/etc/selinux/config文件,确保配置持久化。
  • resetRootPassword:使用chpasswd命令在chroot环境中安全更新密码,避免交互式输入。
  • 错误处理:同步执行命令(execSync)并捕获异常,符合生产环境要求。
  • 适用场景:可集成到NestJS守护进程中,自动化系统修复任务。

技术总结


场景操作命令/文件
系统启动失败内核参数修改rw init=/sysroot/bin/sh
根目录切换挂载真实系统环境chroot /sysroot
永久关闭SELinux修改配置文件/etc/selinux/config
Root密码重置密码更新passwd root
SELinux标签修复创建自动标记文件touch /.autorelabel

关键提示:

  • 救援模式需 物理或虚拟控制台访问权限
  • 操作前确保理解命令后果,避免误修改系统关键配置
  • SELinux问题可通过关闭策略临时规避,但生产环境建议结合 audit2allow 定制规则

细节总结:

  • 救援模式本质:通过内核参数修改(init=/sysroot/bin/sh)绕过正常启动流程,挂载最小化环境
  • SELinux关键点:enforcing模式阻塞服务时,permissive模式可临时规避;/.autorelabel文件触发重启时的上下文重建
  • 密码重置原理:在chroot环境中,passwd命令直接修改/etc/shadow文件
  • 安全建议:生产环境中禁用SELinux需谨慎,本案例适用于学习环境;长期方案应调试策略规则(如semanage
http://www.dtcms.com/a/546634.html

相关文章:

  • 利用不坑盒子在WPS中插入网页,放映的电脑无需安装插件,直接就能显示网页!
  • 济南网络建站企业网站推广的策略有哪些
  • 南昌建网站那家好乐享黔程是什么公司
  • Vue 中 <keep-alive> 功能介绍,使用场景,完整使用示例演示
  • 上海做网站最低价做网站赚钱一般做什么
  • 《openEuler2403 与 PostgreSQL17 组合实战:搭建个人本地数据库服务》
  • 网站首页导航栏网站需要怎么做的
  • 莆田网站开发公司免费制作视频相册
  • 后台网站下载做瞹瞹小视频网站
  • 手机网站制作工具中国三大水电建设基地
  • 智慧养老:产品是基础,服务是灵魂
  • 福田网站建设-信科网络有关维护营销型网站建设的方法
  • 【开题答辩全过程】以 仓库管理系统的设计为例,包含答辩的问题和答案
  • 如何做网站源码备份奢侈品的网站设计
  • 电子学会青少年机器人技术(二级)等级考试试卷-实操题(2025年9月)
  • Rust 的“家族隐私”法则:深入理解 pub 与可见性
  • dedecms招聘网站网站建设中的主要功能
  • 动易网站怎么进入后台宁波外贸网站制作
  • 怎么建立网站的流程网站建设 推广找山东博达
  • html做的网站图片横着摆放网站开发与设计英文文献
  • 宁波网站排名滨州做企业网站
  • 更新一下博客新样式
  • 电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口
  • 教育网站模块建设浙江seo外包费用
  • 网站建设公司的名字线上装修设计
  • 网站建设公司销售提成南昌seo哪家好
  • 怎么关注网站 在手机上冠县做网站哪里好
  • 建设食品网站网站建设定制开发服务
  • 深入解析 Rust 内部可变性模式:安全与灵活的完美平衡
  • 西安360免费做网站网校网站毕业设计的方案