Linux 无法运行任何命令,因为我移动了libc.so文件

Linux 无法运行任何命令,因为我移动了libc.so文件,linux,unix,dynamic-linking,Linux,Unix,Dynamic Linking,我有一个动态链接器,它是/lib64/libc.so.6 我愚蠢地将它重命名为/lib64/libc.so.6。旧的,现在没有命令工作了 我无法通过ls或mv重新命名它 我可以运行ldconfig,但它说权限被拒绝,我不能运行sudo或su-我到底能做些什么来解决这个问题?我正在运行Oracle Linux redhat 6.7转到单用户模式,使用rw装载文件系统,因为您知道重命名文件move/lib64/libc.so.6.old/lib64/libc.so.6的位置从恢复/安装iso开始,然

我有一个动态链接器,它是
/lib64/libc.so.6

我愚蠢地将它重命名为
/lib64/libc.so.6。旧的
,现在没有命令工作了

我无法通过
ls
mv
重新命名它


我可以运行
ldconfig
,但它说权限被拒绝,我不能运行
sudo
su-
我到底能做些什么来解决这个问题?我正在运行Oracle Linux redhat 6.7

转到单用户模式,使用rw装载文件系统,因为您知道重命名文件move/lib64/libc.so.6.old/lib64/libc.so.6的位置

从恢复/安装iso开始,然后重新命名该文件


如果无法重新启动或无法物理访问计算机,可以尝试安装BusyBox的编译版本,并使用其su和mv命令。因为BusyBox是静态链接的,所以它应该在没有libc.so的情况下工作

我还建议使用@wildplasser已经提到的装载点解决方案

如果在损坏的主机上有一个挂载的目录,则可以使大多数命令行工具重新工作。如果你有幸拥有一个,那么你所需要的就是在共享上上传libc-x.yz.so(你可以从Internet上的另一个主机获取),将其重命名为libc.so.6,并将挂载的目录添加到LD_LIBRARY_路径

如果x.yz版本与您无意中移动的版本相同,那么ls、cp等命令将在您设置LD_LIBRARY_PATH的控制台中再次工作。您不应该从此控制台注销,因为您将无法再次登录

!!请注意,setuid命令行工具无法工作(请参阅)。不幸的是,“sudo”就是其中之一,这就是为什么你不能轻易地恢复你的长期痛苦。但是,它使您能够在执行某些硬恢复之前保存所有数据并完成所有操作


如果您成功地完成了上述技巧,并且有足够的时间,您可以尝试按照上的建议构建“sudo”的静态链接版本(甚至可能在另一台主机上构建并通过NFS进行复制),然后将。移动回使用它。

您用谷歌搜索过这个吗?其他人也做过类似的事情并修复了它。并在StackOverflow上发布答案。例如,/sbin/或/usr/sbin中可能有一个可用的程序?也许有一个网络挂载可以用来调用静态链接的二进制文件?或者可能只是一个静态链接的shell?如果libc.so被移动,为什么mv应该在单用户模式下工作?我如何在无法进入机器的情况下安装一些东西?在这种情况下,“只”复制二进制文件(没有libc可能很难),但恢复iso肯定是更简单的方法。
 LD_PRELOAD=/lib64/libc.so.6.old mv /lib64/libc.so.6.old /lib64/libc.so.6