루트 쉘이 실수로 변경되었습니다. 유효한 쉘로 다시 변경하려면 어떻게해야합니까? chsh -s /usr/bin 대신에 chsh -s /bin/bash

실수로 들어갔다

chsh -s /usr/bin 

대신에

chsh -s /bin/bash 

이제 루트 쉘에 로그인 할 수 없습니다. bash 쉘을 루트로 수동으로 시작하는 방법은 무엇입니까?



답변

root는 액세스 권한이 없지만 sudo 그룹의 사용자는 여전히 권한있는 명령을 실행할 수 있습니다. 오류는 sudo가 아니라 sudo chsh명령의 다른 위치 (예 : chsh 오류) 인 것 같습니다.

따라서 sudo는 분명히 작동합니다.

passwd 파일은 다음을 사용하여 편집 할 수 있습니다.

sudo vipw

그리고 루트 쉘은 수동으로 변경되었습니다.

( /etc/passwd보통 첫 줄 )

root:x:0:0:root:/root:/bin/bash

안개 남자 VIPW

vipw 및 vigr 명령은 / etc / passwd 및 / etc / group 파일을 각각 편집합니다. -s 플래그를 사용하면 해당 파일의 섀도 버전 인 / etc / shadow 및 / etc / gshadow를 각각 편집합니다. 프로그램은 파일 손상을 방지하기 위해 적절한 잠금을 설정합니다.


답변

다른 계정에 액세스 할 수 있다고 가정하는 다른 옵션은 다음을 사용하여 기본 셸을 수동으로 재정의하는 것입니다 su --shell=/bin/bash.

-s, –shell = SHELL
/ etc / shells가 허용하는 경우 실행합니다.

이것의 주요 장점은 다른 권한있는 계정이 아닌 다른 계정에만 액세스 할 수 있다는 것 입니다.


답변

보안상의 이유로 텍스트 또는 그래픽 및 유틸리티와 같은 로그인 susudo다른 사용자가 모든 대상 사용자의 쉘을 통해 그 명령을 실행 당신이 명령을 실행 할 수있다. 대상 사용자의 쉘이 작동하지 않으면 결과를 볼 수 있습니다.

setuid-root 바이너리 또는이를 우회 할 수있는 기능을 수행하는 여전히 기능적인 루트 쉘이없는 한, 복구 시스템 또는 라이브 이미지를 사용하여 재부팅하고 문제를 해결하는 것이 가장 좋습니다.

복구 시스템을 부팅하고 실제 시스템의 루트 파일 시스템을 어딘가에 마운트 /mnt/foo하고 편집 /mnt/foo/etc/passwd하여 셸을 수정하십시오. 저장하고 마운트를 해제하면 완료됩니다.


답변

init=/bin/bash커널 명령 줄에 추가 하고 (grub으로 부팅하는 경우을 눌러 e부팅 항목 편집) 비밀번호를 입력하지 않아도 bash 셸이 루트로 실행됩니다. 루트 파일 시스템은 여전히 ​​읽기 전용으로 마운트 될 수 있으므로 먼저 다시 마운트해야합니다. 그런 다음로 쉘을 다시 변경할 수 있습니다 chsh.


답변

sudo usermod -s /bin/bash jdoe

의 쉘 변경됩니다 은 jdoe 에를 bash. 그런 다음 sudo egrep jdoe /etc/passwd확인할 수 있습니다 .


답변