mv libtinfo.so.5.bak libtinfo.so.5를 sudo할 수 없습니다.

mv libtinfo.so.5.bak libtinfo.so.5를 sudo할 수 없습니다.

한 시간 전에 저 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에서) 유사한 해결 방법을 사용해야 합니다.

추가 자료:

관련 정보