Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用另一个更新的libc.so.6替换符号链接libc.so.6后如何恢复?_Linux - Fatal编程技术网

Linux 用另一个更新的libc.so.6替换符号链接libc.so.6后如何恢复?

Linux 用另一个更新的libc.so.6替换符号链接libc.so.6后如何恢复?,linux,Linux,用另一个更新的libc.so.6替换符号链接libc.so.6后如何恢复 我已经检查了下面的链接 问题是我用另一个libc.so.6更新了文件 没有knoppix还有其他方法吗?我不能做rm,cat,mv。。etc仅支持ldconfig,但我甚至无法替换该文件,因为链接就在那里。如何删除此文件?如果您在没有任何准备的情况下已经陷入此类问题,那么,如果没有外部救援引导,您就很有可能无法恢复。对于未来的实验,您可以使用以下准备之一: 在一个单独的终端中启动mc(Midnight Commande

用另一个更新的libc.so.6替换符号链接libc.so.6后如何恢复

我已经检查了下面的链接

问题是我用另一个libc.so.6更新了文件


没有knoppix还有其他方法吗?我不能做rm,cat,mv。。etc仅支持ldconfig,但我甚至无法替换该文件,因为链接就在那里。如何删除此文件?

如果您在没有任何准备的情况下已经陷入此类问题,那么,如果没有外部救援引导,您就很有可能无法恢复。对于未来的实验,您可以使用以下准备之一:

  • 在一个单独的终端中启动mc(Midnight Commander)或另一个具有嵌入式文件系统操作实现的复杂外壳式工具
  • 创建“rescue”工具集(如/rescue下的FreeBSD中的工具集)
  • 启动任何脚本语言(Python、Ruby等)的
    REPL
    工具;在执行危险步骤之前,可能需要调用一些导入(如Python中的sys、
    os
    os.path
(对于所有这些操作,在实验之前备份关键系统路径是一种很好的方式。)

但是一些小动作可以在一个裸壳中完成,而不需要使用libc。在大多数交互式shell(如
bash
)中,都有一些有用的内置程序,因此您可以:

  • echo*
    echo/lib/*
    而不是
    ls
  • echo-n>$file
    使其为空;对于
    ldconfig
    ,这将有效地将其从库中删除,因为ldconfig仅在其缓存中列出正确识别的库
  • 如果
    printf
    是shell内置的(对于现代
    bash
    ),您可以使用它和shell重定向创建任何二进制文件;这是非常缓慢和容易打字,但仍然是一个机会
接下来,在每次外部命令调用之前为适当的libc版本设置LD_PRELOAD,以允许用另一个库替换任何库;e、 g.
LD_PRELOAD=/lib/libc-2.11.3.so ls
将使用/lib/libc-2.11.3.so中找到的所有外部符号运行
ls
。因此,它们已覆盖了您安装的名称。(在导出规范之前不要尝试使用
env
!它会因libc损坏而失败,对于任何B组shell(如
bash
)都不需要它)使用/lib的备份副本导出LD\u LIBRARY\u路径,/usr/lib允许解决大多数主库目录损坏的问题。(注意,您链接的问题中描述了此方法。您真的尝试过吗?)

我希望可以在这个列表中添加另一种黑客方法


另外,这个问题不应该转移到ServerFault吗?

最后我使用了knoppix。无论如何谢谢你!