시스템이 busybox
설치된 경우이를 사용하여 다시 되돌릴 수 있습니다.
busybox
많은 표준 유틸리티가 내장 된 바이너리입니다. 것 같은 mv
, sh
, ls
, 등
Pavel의 답변에 대한 귀하의 의견에서 모든 것이에서 끝나는 것처럼 들립니다 /var
. 당신은 시도 할 수 있습니다 /var/bin/busybox mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
. 그러면 대부분의 시스템이 다시 작동하게됩니다. 같은 몇 가지 디렉토리가 있습니다 /tmp
또한 존재하는 /var/tmp
당신은 단지 그들을 이동할 수는. 잘만되면 이것들은 mv
불평했고 그들은 홀로 남겨졌습니다.
루트 쉘 얻기
당신은 또한 당신의 루트 쉘을 잃었 언급, 그것은 su
당신에게주고있다 ld-linux
라이브러리 오류가 발생했습니다. 다음을 사용할 수 있습니다.
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/su
참고 :이 시도하면 작동하지 않습니다. 때문이다 su
에서 여러 개의 파일이 필요합니다 /etc
( passwd
, pam.d
, 등을). /etc
그래도 그대로 라면 성공할 가능성이 높습니다.
비지 박스 없음
busybox를 사용할 수 없다면 다음과 같은 ld-linux 트릭을 사용할 수 있습니다 su
.
LD_LIBRARY_PATH=/var/lib64 /var/lib64/ld-linux-x86-64.so.2 /var/bin/mv /var/{bin,etc,lib32,lib64,root,sbin,usr} /
라이브 CD에서
주석에서 논의했듯이 루트 쉘을 잃어 버린 경우 거의 붙어 있습니다. 기본적으로이 문제를 해결하려면 루트 권한이 필요합니다. 얻을 수있는 유일한 방법은 같은 유틸리티를 가지고있다 su
거나 sudo
(이 시점에서 비 기능적 둘 다) 사용 권한을 확대를, 또는 다른 프로그램이 이미 (실행하지 가능성이 수 있는지에 따라) 루트로 실행 납치.
이것은 유일한 옵션은 라이브 CD입니다. 라이브 CD (또는 라이브 USB 등)로 부팅 한 후에는 루트 볼륨을 마운트하고 영향을받는 디렉토리 /var
를에서 원래 홈 으로 다시 옮기십시오 /
.
일어난 일의 개요
folder/*
같은 뭔가 밖으로 확대 한 것 folder/foo
과 folder/bar
.
/*
같은 것으로 확장했을 것 /bin
/lib32
/lib64
/etc
/home
/root
/var
입니다. 그것이 /var
마지막 항목 임을 주목 하십시오.
따라서 쉘이 모든 글로브를 확장하면 다음과 같이 실행됩니다.
mv folder/foo folder/bar /bin /lib32 /lib64 /etc /home /root /var
/var
목록의 마지막 항목과 마찬가지로 모든 것이 항목으로 이동되었습니다.
왜 /var/bin/su
오류가 발생 합니까?/lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
리눅스의 거의 모든 바이너리는에 대해 동적으로 링크 ld-linux
됩니다. ld-linux
바이너리에 필요한 다른 라이브러리를로드하는 라이브러리입니다. 귀하의 시스템에서 이것은에 있습니다 /lib64/ld-linux-x86-64.so.2
. 이 디렉토리가 이동되었으므로 동적으로 링크 된 실행 파일은 더 이상 작동하지 않습니다.
busybox가 작동하는 이유는 busybox가 정적으로 연결되어 있기 때문입니다. 사용하지 않습니다 ld-linux
.
/var/bin/su
직접 달릴 수 없습니까?