覆盖libc.so.6的惨痛教训

news/2024/5/12 10:31:04/文章来源:https://blog.csdn.net/MyySophia/article/details/128082242

覆盖libc.so.6的惨痛教训

    • 背景
    • 问题
    • 原因
    • 解决
      • 1、当前session未断开
      • 2、OS崩溃重启,所有ssh session断开
    • 惨痛教训
      • 1、对于上产环境的内核依赖库文件不能随意覆盖、删除。
      • 2、 scp 文件覆盖问题
    • 总结
    • 参考

背景

发生时间: 2022年11月28日08:55:20
偷了个懒,在安装tmux的时候直接从别的服务器上copy二进制文件,而且是跨OS 版本的。缺少一些lib库文件,直接从安装好的机器上copy过来。然后系统就崩了。惨痛的教训.

为了在线上安装环境依赖,给glibc库升级,由于线上环境libc.so版本低,不支持安装,所以手贱把动态库中的libc.so.6给移走了,直接导致Linux系统崩溃,系统瘫痪,所有用户均被强制退出。
意识到缺少对libc.so的认识,以为跟普通的lib包类似,直接把新版的so软连过去就可以满足安装和升级,现在哦豁… 软链不软链已经不重要了,反正腿是软趴趴的。

问题

执行tmux 命令发现缺少相关库依赖文件. 于是一波S操作。

目标机器

 ~]$tmux new -s etl01
tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory~]$tmux new -s etl01
tmux: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by tmux)
tmux: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libevent-2.0.so.5)
tmux: /lib64/libc.so.6: version `GLIBC_2.15' not found (required by /usr/lib64/libevent-2.0.so.5)
tmux: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/lib64/libevent-2.0.so.5)

tmux安装成功的机器

 ⚡ root@master1  /tmp  scp -p /usr/lib64/libevent-2.0.so.5 10.50.10.43:/usr/lib64/
root@10.50.10.43's password:
libevent-2.0.so.5                                                                                                       100%  291KB 107.7MB/s   00:00⚡ root@master1  /tmp ⚡ root@master1  /tmp ⚡ root@master1  /tmp  scp -p /lib64/libc.so.6 10.50.10.43:/lib64/
root@10.50.10.43's password:
libc.so.6                                                                                                                 0%    0     0.0KB/s   --:-- ETApacket_write_wait: Connection to 10.50.10.43 port 22: Broken pipe
lost connection✘ ⚡ root@master1  /tmp  scp -p /lib64/libc.so.6 10.50.10.43:/lib64
ssh: connect to host 10.50.10.43 port 22: Connection refused
lost connection✘ ⚡ root@master1  /tmp  scp -p /lib64/libc.so.6 10.50.10.43:/lib64
ssh: connect to host 10.50.10.43 port 22: Connection refused
lost connection

22端口down了,我就知道系统崩了。因为之前测试环境搞过一次,而这次是正式环境。

原因

libc.so.6 是很基础的库(glibc),是软连接到在Linux系统中基本的命令,有很多可执行文件都会依赖这个共享库。当不小心把这个库改名字或者移走了,都会导致不同程度的异常,可以借助LD_PRELOAD变量和"ldconfig"命令来恢复这个共享库。前提是终端没有断开的情况下操作。
libc.so.6是一个类似于WINDOWS下的一个快捷指向型的文件,而 linux有两种库,分别为:glibc、libc

解决

解决分为两种情况

1、当前session未断开

如果发现问题的当下没有关闭当前terminal就比较好恢复。 一旦关闭窗口将无法重新连接(可以自己新建窗口试下),重启机器后也将无法进入系统 。必须使用第二种方式修复

LD_PRELOAD允许你定义在程序运行前优先加载的动态链接库,因此在使用ln前就加载了lib库,而不是等到使用ln时加载,这样就能临时使用命令了

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

在这里插入图片描述

2、OS崩溃重启,所有ssh session断开

对于OS 直接崩溃的,比较难搞。我的属于这种,OS 直接重启了。而且起不来的那种。
当时登入ILO单用户模式,OS 在重启,一大堆trace,看着就好不了的那种。

主要思路
1、急救模式Rescue mode
2、rescue模式选则挂载sysinages 这个FS
3、在这个挂载点把之前的libc.so.6恢复

详细操作见参考【2】
在这里插入图片描述

惨痛教训

1、对于上产环境的内核依赖库文件不能随意覆盖、删除。

例如
① 内核级的 /lib64
② 系统级的 /usr/lib64
③ Root用户级别的/usr/local/lib64

2、 scp 文件覆盖问题

scp 命令默认会覆盖源文件,没有交互模式询问你是否覆盖。对于敏感文件scp 之前先确认目标服务器上是否存在,如果存在应先备份再进行后续操作.

总结

此次事件是因对系统层认知不足, 根本原因就是我使用了高版本 2.17 的libc.so.6,覆盖了系统的2.12版本导致的问题。
对于这个错误操作我做出深刻检讨, 对事件负全责。望今后自己和同事能引以为戒,避免再次发生此类事件.

参考

【1】修改libc.so.6导致崩溃解决
【2】救援模式恢复

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_38429.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发现智能合约中的 bug 的 7 个方法

寻找智能合约bug可能是一项高回报的工作,而且它也保护了生态系统免受黑客攻击。我最近有幸采访了一位开发人员,他发现了一个价值 70 亿美元的错误,并因报告该错误而获得了 220 万美元的报酬。 在这篇文章中,我将详细介绍该开发人…

SpringCloud-alibaba-Nacos 从理论到落地使用

Nacos: Dynamic Naming and Configuration Service 就是: 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。、 下面是生态图: Nacos EurekaConfig Bus 即 Nacos就是注册中心 配置中心的组合 他能干什么呢? 1、替代Eu…

Azure CDN

Azure CDN Azure CDN 是服务器的分发网络,可以将网页内容更高效地分发给终端用户。 CDN在POP点的边缘服务器缓存内容,这样更临近终端用户,延迟低。 Azure CDN 给开发者提供全球解决方案,能够将内容放在全球各个节点,提…

Android——Theme和Style-由浅入深,全面讲解

1、官方详细解读 样式和主题背景 | Android 开发者 | Android Developers 2、应用场景 类似web设计中css样式。将应用设计的细节与界面的结构和行为分开。 样式style :应用于 单个 View 的外观。样式可以指定字体颜色、字号、背景颜色等属性 主题theme&…

[附源码]计算机毕业设计springboot动物保护协会网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

使用EL表达式时,PropertyNotFoundException异常的解决过程

一. 业务场景 最近,杨哥的一个班级正在做基于JSPJSTL/EL Servlet JavaBean JDBC MySQL技术方案的阶段项目。其中有一个需求是根据多条件动态搜索商品信息,最终分页显示出商品列表。这个功能可以在dao层采用多分支条件组合,显示页面使用JST…

[Linux](15)线程基础,线程控制,线程的互斥与同步

文章目录前言Linux 线程概念线程的优点线程的缺点线程异常线程用途使用pthread_createpthread_join线程退出线程id分离线程线程互斥问题:临界资源访问问题问题解决:互斥锁的使用RAII 风格的加锁方式可重入 & 线程安全死锁的概念线程同步条件变量生产…

C语言——指针(入门详解)

文章目录1.什么是指针?1.1.理解指针的两个要点:1.2.指针变量:1.3.内存是如何编址?2.指针和指针类型2.1指针的创建与初始化2.2.指针类型3.野指针3.1.什么视野指针?3.2.野指针成因3.3.规避野指针4.指针运算4.1.指针-整数…

【MySQL】数据库服务器硬件优化与实战详解(调优篇)(实战篇)(MySQL专栏启动)

📫作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

【一文秒懂——SLF4j日志】

目录 1. SLF4j日志 2. 日志输出 1. SLF4j日志 在添加了spring-boot-starter的项目中,已经包含了SLF4j日志的相关依赖项。 在添加了lombok的项目中,可以在类上添加Slf4j注解,则lombok框架会在编译期在类中声明名为log的变量,通…

2022Flink大数据比赛项目-焦点科技大数据编程大赛

文章目录0.数据获取1.需求概要2.数据标准2.1.输入数据格式2.2.输出数据格式2.3.数据主键及关系3.表详细1.order_info2.bill_info3.bill_item4.ord_pay5.ord_pay_log6.pay_method7.pay_bank_card4.开发工具、语言版本、工具版本5.赛题解答数据分流任务1任务2任务3小结附录0.数据…

聊聊雪花算法?

随便聊聊 哈喽,大家好,最近换了份工作,虽然后端技术栈是老了点,但是呢,这边的前端技术确是现在市面上最新的那一套技术:Vue3ViteTSXPinaElement-PlusNativeUI。我本人主要是学后端的,确被拉去做…

【博客545】从交换机视角看四种报文:广播、组播、未知单播、已知单播

从交换机视角看四种报文:广播、组播、未知单播、已知单播 交换机视角的四种报文 对于二层交换机来说,它在转发报文时,只有四种类型的报文: 1、广播 2、组播 3、未知单播 4、已知单播。四种报文剖析 1、二层广播报文 当二层交换…

SignalR简介及实践指南

SigalR简介 ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项: 需要从服务器进行高频率更新的应用。 示例包括游戏、社交网络、投票、拍卖…

易观千帆 | 2022年10月银行APP月活跃用户规模盘点

易观分析:易观千帆数据显示,10月手机银行服务应用活跃人数52285.79万,环比下降3.52%。手机银行服务应用月活规模经历了连续5个月的持续增长后,10月出现下降。 10月城商行手机银行服务应用活跃人数3565.56万,环比下降2…

UNIAPP实战项目笔记46 订单确认页面的布局

UNIAPP实战项目笔记46 订单确认页面的布局 实际案例图片 订单页面 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 confirm-order.vue部分 confirm-order.vue 确认订单页面布局和渲染 flex 样式布局 <template>…

字符串5:剑指Offer58-II.左旋转字符串

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;344. 反转字符串 题目&#xff1a; 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个…

衡师11月月赛web题目wp

目录 1.丢三落四的学姐 2.wep&#xff1f;Pwn&#xff01;&#xff01;&#xff01; 这题web部分是buuctf中的DASCTF X GFCTF 2022十月挑战赛&#xff01;的原题 1.丢三落四的学姐 访问题目位置&#xff0c;很明显的phpstudy搭建的痕迹 访问一下经常信息泄露的几个文件&…

Baklib|知识库应用场景:制作员工培训手册

持续的专业发展对于想要加入、保留和提升员工的组织来说是必不可少的。为了确保员工总是能从学习能力中受益&#xff0c;您需要考虑创建培训手册&#xff0c;使员工能够胜任并保持他们的工作能力。 在过去&#xff0c;您可能认为培训手册是一本厚重的册子&#xff0c;充满了密…

一文彻底搞懂Mysql索引优化

专属小彩蛋&#xff1a;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff08;前言 - 床长人工智能教程&#xff09; 目录 一、索引介绍 二、性能分析 三、查询优化 一、索引介绍…