실수로 들어갔다
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가 허용하는 경우 실행합니다.
이것의 주요 장점은 다른 권한있는 계정이 아닌 다른 계정에만 액세스 할 수 있다는 것 입니다.
답변
보안상의 이유로 텍스트 또는 그래픽 및 유틸리티와 같은 로그인 su
및 sudo
다른 사용자가 모든 대상 사용자의 쉘을 통해 그 명령을 실행 당신이 명령을 실행 할 수있다. 대상 사용자의 쉘이 작동하지 않으면 결과를 볼 수 있습니다.
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
확인할 수 있습니다 .