LD_PRELOAD를 변경했는데 이제 SSH에 연결하거나 ls, cp, mv 등을 사용하는 것과 같은 작업을 수행할 수 없습니다. 다음과 같이 표시됩니다.
ls: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
내가 한 일은 다음 파일을 에서 로 옮긴 다음 다음 /lib/x86_64-linux-gnu
과 /root
같이 썼습니다.
LD_PRELOAD=/root/libc-2.19.so:/root/libdl-2.19.so:/root/libm-2.19.so:/root/libpthread-2.19.so:/root/librt-2.19.so bash
하지만 지금은 내 작업을 취소할 수 없습니다. 아시죠?
답변1
일부 라이브러리가 누락되었습니다. 예를 들어 첫 번째 오류 메시지에는 가 ls
필요합니다 librt.so.1
. 심볼릭 링크로 처리할 수 있지만 심볼릭 링크의 대상을 이동했기 /root
때문에 실패합니다. 다음은 귀하가 가져야 할 것의 예입니다:
ls -l /lib/x86_64-linux-gnu/librt*
-rw-r--r-- 1 root root 31744 Dec 4 2016 /lib/x86_64-linux-gnu/librt-2.24.so
lrwxrwxrwx 1 root root 13 Dec 4 2016 /lib/x86_64-linux-gnu/librt.so.1 -> librt-2.24.so
아직 셸이 있는 경우 root
라이브러리를 다시 복사해 볼 수 있습니다. 다음 별칭이 필요합니다.
mcp() { src="$1" dst="$2"; test -f "$src" || return 1; while :; do read -N 10240 -r data; test -z "$data" && break; echo -n "$data"; done <"$src" >"$dst"; }
해결해 볼 수 있는 사항은 다음과 같습니다.
cd /root
for lib in lib*.so; do mcp "$lib" /lib/x86_64-linux-gnu/"$lib"; done
설정을 해제 LD_PRELOAD
하고 복원되었는지 확인하세요.
그렇지 않으면 복구 CD에서 복원해야 합니다. 아니면 다시 설치하세요.