일어난 일 요약

일어난 일 요약

운영체제는 Centos 6.5 64비트 입니다.

tar 파일을 다운로드했는데 압축 mv을 풀고 싶습니다.

압축을 풀고 예기치 않게 (루트로) 실행했는데 mv folder/* /*대신 mv folder/* .bash가 일부 파일을 덮어쓸 수 없다고 말한 다음 다른 파일에 대한 권한을 요청했습니다. Ctrl-c를 눌러 종료합니다.

터미널 세션을 열어두었지만 로그아웃했습니다 su.

shell이제 대부분의 명령에 액세스할 수 없고 , ls어떤 디렉터리에도 액세스할 수 없으며, su.

웹 서버와 서비스가 아직 실행 중인 것 같습니다. 실행할 수 있는 명령은 거의 없으며 이것이 그 중 하나이며 실행 cd하려고 하면 오류가 발생합니다 .cd/etc/binno directory found

편집하다/( bin, etc, lib64, ) root에서 누락된 모든 폴더가 디렉토리 sbin로 이동된 것을 확인하고 시도한 결과 다음을 얻었습니다. /var/var/bin/su-bash: /var/bin/su: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

답변1

시스템에 busybox설치된 경우 이를 사용하여 복구할 수 있습니다.

busybox많은 표준 유틸리티가 내장된 바이너리 파일입니다. mv, 등 .shls

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( 및 기타)의 여러 파일이 필요하기 때문입니다 . 아직 멀쩡하다면 이번에는 성공할 가능성이 크다./etcpasswdpam.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을 승격하거나(이 시점에서는 둘 다 작동하지 않음) 이미 루트로 실행 중인 다른 프로그램을 하이재킹하는 것입니다(실행 중인 프로그램에 따라 다르지만 불가능함). .

이 경우 유일한 옵션은 Live CD입니다. 라이브 CD(또는 라이브 USB 등)로 부팅한 후 루트 볼륨을 마운트하고 영향을 받은 디렉터리를 /var원래 디렉터리 로 다시 이동하세요 /.


일어난 일 요약

folder/*folder/foo및 같은 것으로 확장됩니다 folder/bar.
/*그런 것으로 확장될 것입니다 /bin /lib32 /lib64 /etc /home /root /var. /var마지막 항목 이니 참고해주세요 .
따라서 셸이 이러한 모든 glob을 확장하면 다음과 같은 코드를 실행합니다.

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

Linux의 거의 모든 바이너리 는 ld-linux. ld-linux시스템에서는 에 있습니다 /lib64/ld-linux-x86-64.so.2. 이 디렉토리가 이동되었으므로 동적으로 링크된 실행 파일은 더 이상 작동하지 않습니다.

busybox가 작동하는 이유는 busybox가 정적으로 연결되어 있기 때문입니다. 사용되지 않습니다 ld-linux.

답변2

mv folder/* ./*또한 틀렸습니다. 실행하는 명령의 의미에 대해 더 주의해야 합니다. 3개 이상의 인수가 있는 명령은 mv마지막 인수를 제외한 모든 인수를 허용하고 해당 명령이 가리키는 경로를 마지막 인수에 지정된 디렉터리로 이동합니다.

모든 디렉터리 이동(숨겨진 디렉터리 제외)폴더현재 디렉터리로 이동하려면 다음을 사용해야 합니다.

mv folder/* .

운영 체제가 손상되었습니다. 셸 및 내장 명령은 계속 작동합니다. Live CD를 시작하고 디렉터리를 다시 이동해야 합니다. 재부팅하지 않고도 문제를 해결할 수 있도록 파일을 이동/이름 바꾸는 bash 내장 명령을 알지 못합니다. 자세한 내용은 Patrick의 답변을 참조하세요.

답변3

실수로 /usr을 /usr_old로 옮겼는데 모든 것이 중단되었습니다. 다행히도 프롬프트에 머물렀고 다음 명령을 실행하여 usr 폴더를 복원할 수 있었습니다.

LD_LIBRARY_PATH=/usr_old/lib64 /usr_old/lib64/ld-linux-x86-64.so.2 /usr_old/bin/mv /usr_old /usr

답변4

중요한 여기 있는데 제대로 작동하지 않으면 명령을 mv실행할 수 없고 루트( )에 폴더가 없어진 경우 우선 , 있으면 고쳐질 때까지 종료하지 마세요 . 복구할 수 없습니다. 원격으로 연결되어 있는 경우 연결을 끊으면 서버를 떠날 수 없습니다. 실행 중인 대부분의 서비스는 괜찮을 것입니다. Patrick이 제안한 많은 솔루션 중 하나를 시도해 볼 수 있습니다. 하지만 저처럼 문제가 발생했다면 물리적인 접근이 필요할 것입니다.shell/SUSUsshreboot

컴퓨터에서 재부팅했습니다. 예상대로 커널 패닉이 발생했습니다.

나는 그것이 매우 간단한 수정이라고 생각했습니다. livecd를 연결하고 구조 모드로 들어가는 것은 쉽습니다. 그런 다음 루트 디렉토리를 마운트해야 합니다. 그러나 단순한 설치 명령 이상의 것이 필요합니다.

이는 많은 사람들처럼 저도 lvm 파일 시스템을 가지고 있고 이런 구조를 처리해야 했던 것은 이번이 처음이기 때문입니다. 내가 해야 할 일이 무엇인지 알아보기 위해 온라인으로 검색해야 했습니다. 이 정보를 이 기사에 포함시켰습니다. 이것이 나의 문제 해결 과정입니다.

1) Centos_6.4_min CD를 넣습니다.

2) GUI 인터페이스에서 무엇을 하고 싶은지 묻고 Rescue를 선택합니다.

3) Rescue가 현재 시스템을 마운트하려고 시도하지만 Linux 파티션이 없다고 표시됩니다.

shell4) 옵션이 나타나면 Enter를 선택하십시오.

이 시점에서 나는 시스템을 설치하기 위해 많은 방법을 시도했지만 운이 없었습니다. (lvm 때문에) 다음 단계를 수행해야 한다고 확신합니다.

5) 내 책을 스캔하고,

lvmdiskscan

6) lvscan을 실행하면 "비활성"으로 나열된 모든 열이 표시됩니다.

lvscan

7) 장치 모듈을 로드합니다.

modprobe dm-mod

8) 기존 볼륨을 활성 볼륨으로 변경

vgchange -ay

9) lvscan다시 실행하면 이제 모든 프로젝트가 "활성"으로 나열됩니다.

10) 마운트 지점을 생성하고 논리 파티션을 마운트합니다.

mkdir /mnt/root

mount /dev/VolGroup00/LogVol00 /mnt/root

11) 폴더를 뒤로 이동합니다(다른 폴더가 필요할 수 있음).

mv /var/{bin,etc,lib64,mnt,root,sbin} /

12)reboot

13) 성공!

관련 정보