루트 쉘이 실수로 변경되었습니다. 유효한 쉘로 다시 변경하려면 어떻게 해야 합니까?

루트 쉘이 실수로 변경되었습니다. 유효한 쉘로 다시 변경하려면 어떻게 해야 합니까?

잘못 입력했어요

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확인할 수 있습니다.

관련 정보