删除符号链接后如何恢复libc.so.6



在我们的服务器中,指向libc.so.6的符号链接已被删除。现在,系统中的二进制文件都不起作用。为了解决这个问题,我尝试了:

/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

正如预期的那样,它给了我:

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

我也试过:

/lib/ld-linux-x86-64.so.2  --inhibit-rpath /lib/libc.so.6 
   --library-path /lib/libc-2.11.3.so 
   /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

结果相同。进一步失败的尝试包括cp、mv、cat。

我通过ssh连接,我相信在关闭这个会话后,我将无法打开另一个会话。有没有办法修复这个系统(也许可以使用bash内置程序)?

[编辑]我做了:

while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6

复制文件并尝试使用:

/lib/ld-linux-x86-64.so.2  --inhibit-rpath libc.so.6 --library-path . 
  /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

得到:

/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid

您可以简单地运行ldconfig。大多数发行版都将其作为静态二进制文件发布。

这对我的情况有帮助(实际版本取决于您的库):

ldconfig -l -v /lib/libc-2.13.so

尝试:

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

注意:实际版本取决于您的库。

使用像Knoppix之类的活动cd启动,并在将"损坏"系统的磁盘安装到运行中的活动系统之外后修复丢失的链接。

注意,对于64位:

LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6

这对我来说很好

当然,如果您不在该目录中,它将类似于:
LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.13.so ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib/x86_64-linux-gnu/libc.so.6

如果您以前执行过ls命令,并且知道libc的版本是什么,

ldconfig -l -v /lib64/libc-2.x.so

其中x是您的工作版本。请注意,它可能是lib64或lib,具体取决于您的版本。

我只是这么做了,它奏效了。

简而言之,永远不要删除链接。坏主意。

如果您使用的是Ubuntu,ldconfig将不起作用。刚刚运行:

/sbin/ldconfig.real

非常感谢您提供以下答案。它与root ID配合得很好。我们取消了libc.so.6与更高版本的链接,但在取消了libc.so.6服务器的链接后,服务器突然变得没有响应。ln -s命令不起作用。并没有其他用户能够ssh到服务器。但当我们在命令之下奔跑时,它起了作用。(服务器上存在libc版本)服务器开始正常运行。

下面一个是正确的命令和救生。。。。

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

注意:实际版本取决于您的库

对于其他人来说,所有这些有效的解决方案都要求你在搞乱系统之前成为root

因为这些liblib64目录需要root权限才能创建或更新文件。

所以,如果你不是root,你就完了,不要浪费时间去尝试。从另一个系统启动并修复它。

我在尝试升级符号链接时意外删除了文件/lib64/libc.so.6。。。这很奇怪。没有一个命令工作ls,du,cd vim,su等

唯一拯救我的是,我已经以root用户身份登录于是跑了"$sln/lib64/libc.so-212/lib64/libc-so.6";是什么救了我的命

请参阅这个链接,它非常有帮助。而不是启动服务器和https://www.programmersought.com/article/2176688665/只需确保u可以再次链接的符号链接与前一个相同

建议在重新启动etc之前尝试所有操作,并且不要注销bash终端

最新更新