루트 쉘 설정에서 잘못된 파일로 복구 중

루트 쉘 설정에서 잘못된 파일로 복구 중

루트 사용자의 쉘을 잘못된 파일 경로로 변경하기 위해 "chsh"를 사용하는 것과 같은 어리석은 일을 한다고 가정해 보겠습니다. 나중에 루트 계정에 대한 로그인이 갑자기 실패하고 /bin/ 찾을 수 없음의 내용이 언급되고 로그인 화면으로 돌아갑니다. 복구 모드를 사용하거나 LiveCD를 삽입하여 /etc/passwd를 편집하지 않는 경우 시스템 복구를 위한 옵션은 무엇입니까? 또한 휠에 다른 사용자가 없다고 가정해 보겠습니다(그저 재미로?). 아이디어?

답변1

시작 시 init=/bin/bash시작 옵션에 (또는 다른 기능 쉘의 경로)를 추가하십시오. 그러면 단일 사용자 쉘에 직접 드롭됩니다. 이 환경에서 항목을 mount -o remount,rw /수정하기 전에 다음을 수행해야 할 수도 있습니다. /etc/passwd그런 다음 재부팅하거나 실행하십시오 exec /sbin/init 3.아니요exit커널 패닉*이 발생하므로 Ctrl+D를 입력하거나 누르십시오.

2단계 모드(initrd 이미지 포함)로 로드되는 일부 시스템에서는 이 방법의 또 다른 변형이 필요할 수 있습니다. 부팅 옵션에 가 포함되어 있는 것을 발견하면 init=가장 중요한 것은real_init=, 배치할 위치는 /bin/bash후자의 매개변수(예: )여야 합니다 real_init=/bin/bash.

* 이 환경에서는 커널이 쉘을 다음과 같이 간주하기 때문입니다.초기화 프로그램- 이것은 커널이 알고 있는 유일한 프로세스입니다. 이는 커널이 실행되는 순간에 실행 중인 시스템을 나타냅니다. 커널에 시스템 종료를 지시하지 않고 프로세스를 갑자기 종료하면 커널 패닉이 발생할 수 있습니다. (갑자기 주위가 어두워지고 조용해지면 당황하지 않겠습니까?)

답변2

su실행할 셸을 사용하고 지정할 수 있습니다 (다른 사용자가 없다는 의견에서 이것이 불가능하다는 것을 암시하려고 했는지 확실하지 않습니다 wheel).

su -c /bin/bash

그렇지 않고 SSH 데몬이 루트 로그인을 허용하는 경우 다음과 같이 할 수 있습니다.

ssh root@localhost /bin/bash

예를 들어 부트로더에서 셸을 init init=/bin/ksh또는 이와 유사하게 설정할 수도 있습니다.

답변3

커널 매개변수의 실시간 편집을 허용하도록 부트로더가 구성된 경우 해결책은 재부팅하고 셸을 init 프로세스로 사용하는 것입니다(예: init=/bin/bash. 그런 다음 수동으로 설치해야 하는 항목을 설치하고 편집한 다음 일반적인 방법으로 다시 시작합니다 /etc/passwd.syncinit

답변4

위의 답변은 훌륭하며 이를 읽으면서 뭔가를 배웠습니다. 이러한 방법의 세부 사항을 기억하지 못하고 재부팅해도 괜찮다면 언제든지 Live CD 배포를 사용하여 시스템을 부팅하고 / 파티션을 마운트한 다음 /etc/passwd를 편집하고 재부팅할 수 있습니다. 위의 솔루션만큼 우아하지는 않지만 기억하기 쉽습니다.

관련 정보