
중요한 심볼릭 링크를 삭제했습니다 - libc.so.6
. 가리키는 파일이 있지만 링크 누락으로 인해 ln
또는 같은 기본 명령이 더 이상 작동하지 않습니다. wget
그러나 echo
다른 Bash 내장 기능이 작동합니다.
이 심볼릭 링크를 다시 만드는 방법을 찾고 있습니다.
답변1
ldconfig를 사용하면 심볼릭 링크가 다시 생성됩니다.
# rm /lib/libc.so.6
rm: remove symbolic link `/lib/libc.so.6'? y
# ls -l /lib/libc*
ls: error while loading shared libraries: libc.so.6: cannot open shared object file:
# ldconfig
# ls -l /lib/libc*
[skip]
lrwxrwxrwx. 1 root root 12 May 11 07:59 /lib/libc.so.6 -> libc-2.12.so
보시다시피 방금 테스트했습니다.
답변2
CentOS 6에는 일반적으로busybox
, 에 설치된 정적으로 연결된 Unix 도구 세트입니다 /sbin
. 다음과 같이 실행할 수 있습니다.
/sbin/busybox ln -s libc-2.12.so /lib/libc.so.6
답변3
관련 라이브러리를 미리 로드하려면 LD_PRELOAD를 설정하세요. libpthread로 시도해 보았는데 제대로 작동하는 것 같습니다.
root@spirit:~# mv /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so.0-bak
root@spirit:~# chattr
chattr: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
root@spirit:~# LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0-bak chattr
Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files...
답변4
LD_LIBRARY_PATH
real이 있는 디렉터리를 포함하도록 변수를 설정할 수 있습니다 libc.so.6
.
export LD_LIBRARY_PATH="/dir/for/libc.so.6/:$LD_LIBRARY_PATH"
또한 ldconfig
링크를 다시 생성하려면 실행하세요. 이렇게 하면 명령이 작동하여 ln
명령을 사용하여 시스템을 수정할 수 있습니다.
또 다른 방법은 LiveCD를 통해 부팅하고 거기에 파일을 연결하는 것입니다.