一小时前,我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
,它不起作用。
有人可以帮助我吗?
答案1
失败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 中),则必须使用类似的解决方法。
进一步阅读:
- 获取控制台输出并重新启动实例(亚马逊)