/bin/bash의 내용은 무엇이며 실수로 덮어쓴 경우 어떻게 해야 합니까?

/bin/bash의 내용은 무엇이며 실수로 덮어쓴 경우 어떻게 해야 합니까?

실수로 /bin 폴더에 넣으려고 했던 어리석은 스크립트로 /bin/bash 파일을 덮어썼습니다.

이 파일의 내용을 어떻게 검색합니까? 웹에서 콘텐츠를 찾아 다시 복사할 수 있는 방법이 있나요? 터미널에서 "기호 링크가 너무 많습니다"라는 오류가 발생하는 경우 여기서 선택할 수 있는 것은 무엇입니까?

저는 아직 이런 종류의 일을 처음 접하고 제가 받을 수 있는 모든 도움에 감사드립니다.

편집: Kali 2.2 Rolling을 사용하고 있다는 사실을 언급하는 것을 잊었습니다. Kali 2.2 Rolling은 거의 데비안이지만 몇 가지 추가 기능이 있습니다.

편집 2: 며칠 전까지 내 실수를 깨닫지 못했기 때문에 컴퓨터도 재부팅했습니다. 이것은 이것을 매우 어렵게 만듭니다.

답변1

컴퓨터를 종료하지 마십시오.

아직도 실행중인 쉘이 있습니까? 배쉬인가요? 그렇다면 괜찮습니다. (하지만 다시는 그러지 마세요.)

달리기:

sudo cp /proc/$$/exe /bin/bash

보라, 모든 것이 괜찮다.


댓글의 누군가가 이것이 작동할지 의심했기 때문에:

[vagrant@localhost ~]$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[vagrant@localhost ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[vagrant@localhost ~]$ echo $0
-bash
[vagrant@localhost ~]$ sudo rm /bin/bash
[vagrant@localhost ~]$ bash
-bash: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo su -
su: /bin/bash: No such file or directory
[vagrant@localhost ~]$ sudo cp /proc/$$/exe /bin/bash
[vagrant@localhost ~]$ bash
[vagrant@localhost ~]$ exit
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# logout
[vagrant@localhost ~]$ 

답변2

bash는 쉘, 아마도 시스템 쉘일 것이므로 이제 쉘의 일부가 아직 메모리에 있는 동안 이상한 일이 발생하고 있습니다. 로그아웃하거나 다시 시작하면 더 큰 문제에 봉착하게 됩니다.

따라서 가장 먼저 해야 할 일은 쉘을 보안 쉘로 변경하는 것입니다. 어떤 쉘을 설치했는지 확인하십시오.

cat /etc/shells

그런 다음 쉘을 거기에 나열된 다른 쉘 중 하나로 변경하십시오.

chsh -s /bin/dash

재부팅한 후 업데이트:

다행스럽게도 이제 부팅 프로세스는 이에 의존하지 않으므로 bash시스템 부팅 시 명령줄에 액세스할 수 없습니다. 그러나 편집기를 실행하여 /etc/passwdfrom to line에서 셸을 편집하고 변경할 수 있습니다. 로그아웃했다가 다시 로그인하세요. 이 파일에 다른 변경 사항을 적용하지 마십시오. 그렇지 않으면 시스템이 완전히 망가질 수 있습니다.root/bin/bash/bin/dash

bash그런 다음 다시 설치해 보세요.

apt-get --reinstall install bash

모든 것이 성공하면 chsh돌아갈 수 있습니다 bash.

마지막으로, kali는 고도로 전문화된 배포판이므로 실수로 셸을 덮어쓴 사람들에게는 적합하지 않을 수 있다고 생각합니다.이 인용문은 무례하고 가혹하다고 알려져 있으므로 이 글은 내 경험을 바탕으로 작성되었음을 덧붙여야겠습니다. 제가 어렸을 때 루트로 장난을 치지 말라고 말한 사람이 아무도 없었기 때문에 문자 그대로 시스템을 파괴했습니다.

답변3

로그인할 수 있지만 터미널을 열 수 없거나 셸에 액세스할 수 없지만 GUI를 통해 파일에 액세스할 수 있는 경우 로 이동하여 이름이 로 끝나는 (그러나 아님 ) /bin파일을 찾아 실행합니다(두 번 클릭하거나 마우스 오른쪽 버튼 클릭). 특히 다음을 찾아보세요.sh.sh

  • sh
  • dash
  • ash
  • ksh (또는 ksh뒤에 숫자가 옵니다. 예:  ksh93)
  • zsh
  • yash

아니면 최후의 수단으로,

  • tcsh 또는
  • csh

쉘을 실행할 수 있다면 시도해보십시오.필립스의 대답.

또 다른 방법은 다음과 같이 단일 사용자 모드로 부팅하는 것입니다.이 지침init=/bin/sh그러나 대신에 (또는 다른 쉘 중 하나)를 지정하십시오 init=/bin/bash.

관련 정보