误删根目录软链接恢复,例如/bin /sbin /lib /lib64

背景

昨夜公司老王偶然间找到一款类似于Xftp的linux文件远程工具,成功安装后很兴奋,随手找了台数据库服务器进行操作,在根目录下看到如下图的快捷方式,文件图标左下角有箭头,觉得很不爽,删了,满意的退出。

centos修改软链命令 centos 软链接_网络

然后一系列问题接踵而来,数据库无法连接、服务器无法登录,一直报密码错误,经过一番排查和盘问,得知老王删了一些快捷方式,但是具体删了哪些他也不确定。意识到问题严重性的同事们让老王直接把机房管理员(以下统称甲方大佬)找来,不得不说,这老王人格魅力真大,作为乙方大晚上的叫甲方过来加班。

甲方大佬过来后给服务器接上屏幕排查,发现屏幕已经黑屏,左上角有个光标一只在闪,然后啥也干不了了,经过一系列的讨论,决定重启试试,重启后也不行,卡在如下图所示,基本上已经确定了老王删了不该删的东西,罪名基本已经成立。

centos修改软链命令 centos 软链接_根目录_02

然后只能进入救援模式排查,甲方大佬做了一个启动盘,然后进入到救援模式,发现老王真的是把/bin、/lib、/sbin、/lib64给误删了,经过对数据库的备份后,甲方大佬重建软连接,将系统重启,然后就可以了,救了老王一命,然后大家就可以回去睡觉了,又是美好的一天。

故障重现

  • 新建一台虚拟机

centos修改软链命令 centos 软链接_linux_03

  • 删除根目录下所有软连接
    用xftp删掉根目录下所有软连接

centos修改软链命令 centos 软链接_根目录_04

  • 检查问题

删除后发现如下问题,其他没测试,但不代表没有

1、用户无法登录,密码总是错误

2、除了cd命令,很多命令都用不了,例如cp、scp、mkdir等;

解决过程

1、准备启动盘

启动盘制作方式很多,大家看着办就好(狗头保命!)

因为我用vm测试,因为准备一个iso镜像就好。

2、进入救援模式

a.插入系统光盘或者 系统 U 盘. 进入 bios , 设置为 光驱或者 U盘启动;

centos修改软链命令 centos 软链接_根目录_05

b.进入系统安装盘界面,先选Troubleshooting,再选Rescue a CentOS system

centos修改软链命令 centos 软链接_服务器_06


centos修改软链命令 centos 软链接_linux_07

c.进入后等待最终进入提示模式,输入 1 回车,回车后看到提示再回车就好

centos修改软链命令 centos 软链接_linux_08

3、创建系统根目录软连接

a.进入救援模式后默认在根目录下,但是这个根目录为U盘系统的目录,ls -l 查看发现所有文件都齐全

centos修改软链命令 centos 软链接_centos修改软链命令_09

b.此时再查看/mnt/sysimage/目录下,ls -l /mnt/sysimage/,有没有发现很熟悉,和删除软连接后的目录一模一样

centos修改软链命令 centos 软链接_网络_10

c.创建软连接。此时如果按照提示执行chroot /mnt/sysimage 切换系统根目录,会报错。因此直接创建就好

cd /mnt/sysimage

ln -s usr/bin bin
ln -s usr/lib lib
ln -s usr/lib64 lib64
ln -s usr/sbin sbin

centos修改软链命令 centos 软链接_服务器_11

4、重启系统

a.进入bios模式,切换启动顺序,F10保存

centos修改软链命令 centos 软链接_网络_12

b.重新进入系统

不出意外的话此时系统已经恢复,出意外的话请留言联系醒狮帮你查看。

centos修改软链命令 centos 软链接_网络_13

注释:经过测试,进入单用户模式,启动参数写成:从ro改为rw init=/usr/sbin/init,然后ctrl + x可以成功启动到正常模式,但是只有部分成功。