修改libc.so.6导致系统命令都不能用?

操作如图:修改了软链接导致系统大部分命令不能使用

解决方法1:ldconfig -l -v /lib64/libc-2.12.so

解决方法2:

libc.so.6被破坏的修复方法:

在每条命令前加上 LD_PRELOAD=/lib64/libc-2.12.so 前缀,不能使用的命令可以重新使用。例如 LD_PRELOAD=/lib64/libc-2.12.so ls,ls命令可以重新使用。删除lib64下被破坏libc.so.6文件,再使用LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6,问题解决。

libc.so.6被删除的修复方法:

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

#############################################

libc.so.6介绍:

libc.so.6是glibc的软链接,glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc,所以说绝大部分操作命令都缺少不了它。如果误删或破坏了libc.so.6,大部分系统命令将无法执行,ssh登录系统也不成功,只会无休止的提示以下错误:

error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

这种情况下,大部分命令已经不能执行了,只能执行例如cd,echo等小部分命令,而实用的cp,mv则不可用,如果想解决,记得ssh一定不要断开,如果ssh已断开则无法重新连接上,得使用另外的方法用光盘重启进入急救模式!!!

在同版本系统上查看/lib/libc.so.6得知是属于libc-2.12.so的软链接,因此,libc-2.12.so文件肯定还是存在的,误删的只是软链接而已,但此时想用ln命令重新建立软链接是失败的,但是可以这样强制设置变量就能执行成功!

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

斜体加粗部分为glibc临时指定的库,这样正确执行后libc.so.6就正确恢复了。

glibc是一个非常底层的库,bash也依赖它,所以,如果把这个库干掉了,基本上啥事都干不了了,但是为啥前面设置一下LD_PRELOAD变量 就可以了呢?是这样的,LD_PRELOAD可以影响程序的运行时的链接(Runtime linker), 它允许你定义在程序运行前优先加载的动态链接库,之前把libc.so.6这个软连接给干掉了,所以系统找不到这个库了,但是通过LD_PRELOAD设置一下glibc这个库的真实地址就可以解决这个问题了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过...
    小5筒阅读 10,961评论 0 3
  • 系统目录结构上下 ls=列出系统目录和文件 [root@ask-01 ~]# ls / binbootdevetc...
    hch004阅读 3,587评论 0 0
  • 出于各种原因,我玩坏了我的系统.........主要出错原因是更改 /usr/lib64 下的 libc.so.6...
    团不慌阅读 42,968评论 7 7
  • 场景需求 默认的Centos6.5 glibc版本最高为2.12, 而在进行Nodejs开发时项目所依赖的包往往需...
    Notonlyphper阅读 9,667评论 0 2
  • 回瞬二月 春悄悄的来了 风轻轻的吹着 河水流淌着 草儿换上了新衣 树儿装饰着自己 看 大雁在苍穹下翱翔 鸟儿在墙头...
    二月219阅读 2,844评论 0 0

友情链接更多精彩内容