当前位置: 首页 > Linux

业内同仁投稿:libc.so被杀引发的惨烈血案,看着大规模翻车的一幕……

时间:2023-04-07 01:27:51 Linux

开头写的是为了在线安装环境依赖升级glibc库,由于线上环境下libc.so版本低,不支持安装,于是贱手把动态库里的libc.so.6去掉,直接导致Linux系统崩溃,系统瘫痪,并且所有用户都被迫退出。意识到对libc.so的不了解,以为和普通的lib包差不多,直接链接新版本的so就可以满足安装升级了。重要的是,反正腿是软的。1、什么是libc.solibc.so.6是一个很基础的库(glibc),软链接到Linux系统中的基本命令,很多可执行文件都会依赖这个共享库。当你不小心更改了这个库的名称或将其删除时,会导致不同程度的异常。您可以使用LD_PRELOAD变量和“ldconfig”命令来恢复此共享库。前提是终端没有断开。libc.so.6是一个类似于WINDOWS的快捷方式指向文件,而linux有两个库,即:glibc和libc,说明libc是Linux下的ANSIC函数库;glibc是Linux下的GUNC函数库函数库:2.运行过程操作系统版本为:RedHatEnterpriseLinuxServerrelease6.81。出现这个问题是因为笔者是直接在生产环境中操作的。当时软链接不成功,报错:文件已经存在,软链接失败。.所以我们考虑删除它。在制作新的软链之前,直接导致错误。基本上非系统命令都有这个libc.so.6=>/lib64/libc.so.6,所以libc.so.6很重要,绝对不能删除、改名、去掉。它可以被覆盖。不知道,想死的可以试试[root@IDC-Redhat6.8]#ln-s/home/david/libc-2.17.so/lib64/libc.so.6ln:creatingsymboliclink`/lib64/libc.so.6':文件存在[root@IDC-Redhat6.8]#mv/lib64/libc.so.6.who:加载共享库时出错:libc.so.6:无法打开共享对象文件:没有这样的文件或目录awk:加载共享库时出错:libc.so.6:无法打开共享对象文件:没有这样的文件或目录日期:加载共享库时出错:libc.so.6:无法打开共享对象文件:否这样的文件或目录[root@IDC-Redhat6.8]#我当时吓尿了,生产环境被我破解了,怎么破解。后来查了原因才知道是很多命令依赖glibc。我把它的软链接去掉了,系统找不到这个库,那肯定完了。注意:如果出现这种情况,只要不关机重启,是不会影响业务运行的。如果还不够,则必须注意磁盘的使用情况。在终端输入用户名回车后,直接显示如下错误,无法登录。2.尝试单点登录,会出现卡片界面。如图:单用户模式已经不能保存了。他本来就是个懵懂少年,现在更糟了。3.问题解决当时执行命令和误操作后,只要远程连接没有断开,还有恢复的余地。但是远程连接异常断开后,很多人都迷路了。您只能尝试救援模式。如果此时远程连接会话仍然存在,可以尝试使用以下命令:[root@IDC-Redhat6.8~]#mv/lib64/libc.so.6.who:errorwhileloadingsharedlibraries:libc.so.6:无法打开共享对象文件:没有这样的文件或目录awk:加载共享库时出错:libc.so.6:无法打开共享对象文件:没有这样的文件或目录日期:加载共享库时出错:libc.so。6:cannotopensharedobjectfile:Nosuchfileordirectory[root@IDC-Redhat6.8~]#LD_PRELOAD=/lib64/libc-2.12.soln-s/lib64/libc-2.12.so/lib64/libc.so.6[root@IDC-Redhat6.8~]#lltotal120492-rw-r--r--。1rootroot123361280Apr1423:54all.tar-rw------。1rootroot1098Apr1423:21anaconda-ks.cfg-rw-r--r--。1rootroot8835Apr1423:21install.log-rw-r--r--。1rootroot3384Apr1423:21install.log.sysloglrwxrwxrwx。1rootroot12Apr1423:20libc.so.6->libc-2.12.so[root@IDC-Redhat6.8~]#mvmv:missingfileoperandTry`mv--help'了解更多信息n.[root@IDC-Redhat6.8~]#说明:LD_PRELOAD允许你定义在程序运行之前首先加载的动态链接库,这样lib库在使用ln之前加载,而不是等到ln被使用,这样可以暂时使用命令或者使用ldconfid命令恢复[root@IDC-Redhat6.8~]#mv/lib64/libc.so.6.who:errorwhileloadingsharedlibraries:libc.so.6:cannot打开共享对象文件:没有这样的文件或目录awk:加载共享库时出错:libc.so.6:无法打开共享对象文件:没有这样的文件或目录日期:加载共享库时出错:libc.so.6:无法打开共享目标文件:没有这样的文件或目录[root@IDC-Redhat6.8~]#ldconfid[root@IDC-Redhat6.8~]#lltotal120492-rw-r--r--。1rootroot123361280Apr1423:54all.tar-rw------。1rootroot1098Apr1423:21anaconda-ks.cfg-rw-r--r--。1rootroot8835Apr1423:21install.log-rw-r--r--。1rootroot3384Apr1423:21install.log.sysloglrwxrwxrwx。1rootroot12Apr1423:20libc.so.6->libc-2.12.so4。如果远程连接已经退出,只能使用紧急模式尝试修复首先准备好系统安装盘,使用安装盘启动系统。选择第三个选项:拯救已安装的系统选择语言和键盘(默认配置):过一会儿会出现是否设置网络。一般来说,没有问题就不用设置网络。我这里选择No:rescuemode选项:1)继续,rescue模式程序会自动查找系统中已有的文件系统,挂载到/mnt/sysimage目录下。2)Read-Only,现有文件系统将以只读模式挂载。3)跳过,需要手动挂载。4)高级,高级选项。原系统挂载路径/mnt/sysimage,如果想获取原系统的root环境,执行一行命令:chroot/mnt/sysimage。直接选择shellstartshell进入shell命令行。因为命令“mv/lib64/libc.so.6”。已经执行了,执行chroot/mnt/sysimge会报错:exitshell&reboot重启主机就OK了!本文转载于:https://mp.weixin.qq.com/s/JI...