한 시간 전에 저 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
다른단순한명령이 작동할 수 있습니다(예: 빠른 검사에서 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에서) 유사한 해결 방법을 사용해야 합니다.
추가 자료: