grub에서 /etc/passwd 파일 편집

grub에서 /etc/passwd 파일 편집

우분투(14.04)에 zsh를 설치하려고 합니다. zsh로 전환하면 슈퍼유저 모드로 들어갈 수 없습니다.

su를 실행하면 passwd를 묻는 메시지가 표시되고 올바른 비밀번호를 입력하면 다음과 같이 표시됩니다.

Cannot execute which zsh: No such file or directory

하지만 잘못된 비밀번호를 입력하고 Enter를 4~5번 누르면 아무 것도 나타나지 않습니다.

내 파일을 확인하면 다음과 같이 /etc/passwd표시됩니다.

root:x:0:0:root:/root:which zsh

파일을 편집하고 저장하려고 하는데 표시됩니다.

Unable to save /etc/passwd

grub을 통해 런레벨을 1로 변경하려고 시도했지만 오류가 발생했습니다.

APCI PCC probe failed

VirtualBox에서 Ubuntu를 실행하고 있습니다.

답변1

비밀번호 파일에서 해당 단어를 제거해야 합니다 which. 다음과 같아야 합니다.

root:x:0:0:root:/root:/bin/zsh

여기서 /bin/zsh는 Z 셸 바이너리의 경로입니다.
현재 구성에서는 로그인 프로세스가 실행을 시도 which zsh하지만 명령이 실패합니다.

또한 해당 파일은 sudo vim /etc/passwd루트만 쓸 수 있는 파일이므로 루트로 편집하세요.

그렇지 않은 경우 sudo복구 su모드로 부팅합니다(GRUB 부트 로더에서 Ubuntu의 고급 옵션을 선택한 다음 Ubuntu...(복구 모드)를 선택한 다음 루트/루트 쉘 프롬프트로 드롭을 선택합니다). 그런 다음 /파일 시스템을 읽기-쓰기( mount -o remount,rw /)로 다시 마운트하면 파일 내용을 편집할 수 있습니다 /etc/passwd. 우분투 16.04에서 테스트되었습니다.

답변2

Grub 프롬프트에서는 파일을 편집할 수 없습니다(Grub은 쓰기 지원 없이 파일을 읽을 수만 있습니다). 리눅스를 부팅해야 합니다.

정상적으로 로그인할 수 없는 경우에는 정상적인 시작 과정을 완전히 생략하고 커널과 셸만 시작할 수 있습니다. Grub 프롬프트에서 e부팅 순서 편집을 누르고 init=/bin/bash줄 끝에 추가한 linux=…다음 Ctrl+ X시작을 누릅니다. 루트 쉘만 얻을 수 있으며 다른 것은 없습니다. 달리기

mount -t proc proc /proc
mount -o remount,rw /

지금 실행하여 chsh -s /bin/zsh root사용자 데이터베이스를 복구하세요.

그런 다음 Alt++를 사용 SysRq하여 다시 시작한 U다음 Alt++를 사용 SysRq하여 시작 B하거나 다음 명령을 사용하여 정상적으로 시작하십시오.

mount -o remount,ro /
umount /proc
exec /sbin/init

팁: chsh실행할 필요가 없습니다.사용자토론. 이런 식으로 쉘을 인증합니다.

팁: 일부 구성을 변경할 때는 항상 셸을 열어두고 구성을 테스트하세요. 실수한 경우에도 명령줄을 사용하여 수정할 수 있습니다.

팁: 다음을 수행할 수 있습니다.toor계정 을 만들어라UID 0(그래도 여전히 루트임)을 사용하고 루트와 동일한 비밀번호를 사용하면 /bin/sh문제가 발생할 경우 로그인할 수 있는 다른 방법을 유지하기 위해 쉘이 그 안에 남아 있습니다. 더 나은 방법은 정적으로 링크된 쉘( busybox-static또는 zsh-static)을 설치하고 이를 toor의 로그인 쉘로 사용하는 것입니다.

¹또는 다음을 사용할 수 있습니다.손님호스트가 Linux인 경우.

답변3

루트 비밀번호를 알고 있다면 다음을 실행하여 su -s /bin/bash루트 bash 쉘을 얻을 수 있습니다.

sudo -s /bin/bash그것도 작동해야 하며 구성 방법에 따라 sudo비밀번호만 알고 있거나 비밀번호가 필요하지 않을 수 있습니다.

chsh -s /bin/bash그런 다음 를 사용하여 루트의 쉘을 다시 bash로 변경할 수 있습니다 .

그런데 UNIX 시스템에서 루트 쉘을 변경하는 것은 일반적으로 좋지 않은 생각입니다. 많은 cron 작업 등은 루트 쉘을 해당 운영 체제의 기본 루트 쉘로 사용합니다.~ 할 것이다바꾸면 깨집니다.

답변4

sudo vi /etc/passwd를 시도하고 현재 로그인한 사용자의 비밀번호를 입력하십시오.

/etc/shell에서 셸의 올바른 경로를 찾을 수도 있습니다.

현재 쉘을 확인하려면 echo $SHELL을 시도하십시오.

관련 정보