잘못 입력했어요
chsh -s /usr/bin
바꾸다
chsh -s /bin/bash
이제 루트 셸에 로그인할 수 없습니다. 루트로 bash 셸을 수동으로 시작하려면 어떻게 해야 합니까?
답변1
루트에는 액세스 권한이 없지만 sudo 그룹의 사용자는 여전히 권한 있는 명령을 실행할 수 있습니다. 오류는 sudo가 아니라 명령의 다른 위치에 있는 것 같습니다 sudo chsh
(예: chsh 오류).
그래서 귀하의 sudo는 분명히 작동하고 있습니다.
passwd 파일은 다음 명령을 사용하여 편집할 수 있습니다.
sudo vipw
루트 쉘을 수동으로 변경하십시오.
(보통 첫 번째 줄 /etc/passwd
)
root:x:0:0:root:/root:/bin/bash
퍼먼VIP 룸
vipw 및 vigr 명령은 각각 /etc/passwd 및 /etc/group 파일을 편집합니다. -s 플래그를 사용하면 /etc/shadow 및 /etc/gshadow 파일의 섀도우 버전을 각각 편집합니다. 프로그램은 파일 손상을 방지하기 위해 적절한 잠금을 설정합니다.
답변2
다른 계정에 대한 액세스 권한이 있다고 가정하면, 또 다른 옵션은 다음 명령을 사용하여 기본 셸을 수동으로 재정의하는 것입니다 su --shell=/bin/bash
.
-s, --shell=SHELL
/etc/shells가 허용하는 경우 SHELL을 실행합니다.
이것의 가장 큰 장점은 다른 계정이 아닌 다른 계정에만 액세스하면 된다는 것입니다.특권하나.
답변3
보안상의 이유로 텍스트 및 그래픽 로그인과 su
다른 sudo
사용자로 명령을 실행할 수 있는 유틸리티(예: 및 )는 대상 사용자의 셸을 통해 이러한 명령을 실행합니다. 대상 사용자의 쉘이 작동하지 않으면 이미 결과를 본 것입니다 :-(
여전히 작동하는 루트 셸이나 setuid-root 바이너리 또는 이 문제를 우회할 수 있는 무언가를 실행하지 않는 한, 복구 시스템이나 라이브 이미지를 사용하여 재부팅하고 문제를 해결하는 것이 아마도 최선의 방법일 것입니다. .
복구 시스템을 시작하고 실제 시스템의 루트 파일 시스템을 어딘가에 마운트한 다음 /mnt/foo
편집하여 /mnt/foo/etc/passwd
셸을 복구합니다. 저장하고 제거하면 완료됩니다.
답변4
sudo usermod -s /bin/bash jdoe
쉘을 변경합니다제도이도착하다 bash
. 그러면 sudo egrep jdoe /etc/passwd
확인할 수 있습니다.