一小时前,我mv /lib64/libtinfo.so.5 /lib64/libtinfo.so.5.bak
,然后其他人无法ssh
服务。他们的错误消息看起来像这样:
-bash:加载共享库时出错:libtinfo.so.5:无法打开共享对象文件:没有这样的文件或目录与10.60.242.30的连接已关闭。
我想把这个文件改回来, sudo mv /lib64/libtinfo.so.5.bak /lib64/libtinfo.so.5
bash:加载共享库时出错:libtinfo.so.5:无法打开共享库文件:没有这样的文件或目录
似乎sudo
会用到僵局libtinfo.so.5
。
我试过了LD_PRELOAD=./libtinfo.so.5.bak sudo mv /lib64/libtinfo.so.5.bak /lib64/libtinfo.so.5
,它不起作用。
有人可以帮助我吗?
之所以mv
失败,是因为sudo
看到了参数列表,并决定它需要一个shell来解释它。其他一些简单的命令可能工作(在一个快速检查,比如,我看不出中间sh
做时sudo visudo
)。如果是这样,您可以编写并编译一个使用来执行的简单程序sudo
,例如,
#include <stdlib.h>
int main(void)
{
rename("/lib64/tinfo.5.bak", "/lib64/tinfo.5" );
return 0;
}
另一种可能性是脚本,例如在Perl中,它似乎不依赖于ncurses:
$ ldd `path perl`
linux-vdso.so.1 => (0x00007ffd0f9f6000)
libperl.so.5.14 => /usr/lib/libperl.so.5.14 (0x00007fcfc33ba000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fcfc31b6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcfc2f34000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcfc2d18000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcfc298b000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fcfc2754000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcfc373c000)
如果您具有对服务器的物理访问权限,则不需要这种解决方法(因为您可以加载恢复DVD并离线修复服务器)。如果没有,并且只有ssh访问权限(例如,在Amazon AWS中),则必须使用类似的解决方法。
进一步阅读:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句