ciaoly
记录一次服务器事故的处理

access_time
brush 352个字
whatshot 54 ℃

17年的圣诞节, 网站的服务器出现了一起事故, 时恰逢考试, 不得已直到今日才对此事故有所眉目.


运行环境

服务器: Dell PowerEdge 操作系统: CentOS 5.11 后端框架: php-cmsv9

事故表现

  • ssh登陆时提示root无法登陆
  • tty登陆时提示root密码错误
  • 按下 ctrl + alt + delete 后INIT进程报错:
   shutdown[7326]: shutting down for system reboot
   INIT: cannot execute "/etc/rc.d/rc"
   INIT: no more processes left in this runlevel
  • 开机后INIT依然报错.登陆依然失败, 同时主机名显示为"(none)"
    INIT: cannot execute "/etc/rc.d/rc"
  • 刻录的Ubuntu 16.04启动盘和CentOS 6.8启动盘均无法引导并启动服务器, 但随身携带的使用工具制作的Windows PE盘可以引导并启动

  • 进入 救援模式 后使用 chroot /mnt/sysimage/ 报错
    chroot: /bin/sh can not be executable

日志分析

  • 日志文件: secure 发现关键信息:
    sshd[5181]: User root not allowed because shell /bin/bash is not executable
  • 日志文件: message
shutdown[7326]: shutting down for system reboot
init: cannot execute "/etc/rc.d/rc"
init: no more processes left in this runlevel
shutdown[7329]: shutting down for system reboot
shutdown[7331]: shutting down for system reboot

信息检索

于Google发现一条重要信息: Locked out after installing a bash without executable bit

问题分析

  1. 测试的两个启动盘无法引导机器 考虑到机器比较老旧, 而新系统(Ubuntu 16.04和CentOS 6.8 均使用基于UEFI引导的Grub 2启动管理器, 而使用工具制作的Windows PE则一般使用grub4dos启动管理器, 所以决定使用基于mbr方式引导的grub4dos启动管理器引导u盘上的CentOS 5.11, 再进入救援模式解决问题.
  2. rc文件不能执行 rc文件的解释器就是/bin/bash , 如果bash不能执行, 那么rc脚本也就不能执行, 因此bash的执行权限是关键.

    解决方案

  3. 进入救援模式
  4. 修改bash可执行权限
   chmod +x /mnt/sysimage/bin/bash

mbr引导的启动盘制作方法

#如无特别声明,该文章均为 ciaoly 原创,转载请遵循 署名-非商业性使用 4.0 国际(CC BY-NC 4.0) 协议,即转载请注明文章来源。
#最后编辑时间为: 2019 年 10 月 12 日


create 添加新评论


account_circle
email
language
textsms





关于 DreamCat

主题名称:DreamCat | 版本:X2.6.220211

主题开发:HanFengA7 | TeddyNight | Dev-Leo | CornWorld | WhiteBearcn | DFFZMXJ

Designed by HanFengA7 Power by Typecho

Copyright © 2015-2022 by LychApe All rights reserved!

加我的QQ
加我的微博
加我的支付宝
加我的微信