
설치했습니다어류(사용자 친화적인 대화형 명령줄 셸)을 Linux 서버에 설치했는데 나중에 누군가가 제거했지만 잘 모르겠습니다. 무심코 실행했더니 chsh -s /usr/local/bin/fish
이제 서버에 로그인이 안되네요. "로그인: 쉘 없음: 해당 파일 또는 디렉토리가 없습니다"라는 오류 메시지가 나타납니다. 이는 쉘 피쉬가 더 이상 존재하지 않는다는 것 같습니다.
서버에서는 CLI 인터페이스만 제공하는데, 로그인도 되지 않는데 어떻게 로그인 쉘을 변경할 수 있나요?
답변1
루트 계정에 대한 액세스 권한이 있는 경우 chsh -u user -s $SHELL
.
부팅 프로세스에 액세스할 수 있는 경우 init=$SHELL
단일 사용자 셸에 추가하여 이 문제를 다시 해결할 수 있습니다 chsh -u user -s $SHELL
(initrd 이미지가 포함된 2단계 부팅을 사용하는 일부 시스템에서는 대신 사용해야 할 수도 있음 real_init
). . /etc/passwd
읽기-쓰기(사용 mount -o remount,rw /
또는 이와 유사한) 기능이 포함된 파일 시스템을 다시 마운트해야 할 수도 있습니다 .
그렇지 않고 su
다른 사용자의 사용자로 들어갈 수 있다면 시도 su user -c $SHELL
하거나, 사용자에게 SSH로 접속할 수 있다면 다음과 같은 것을 시도할 수 있습니다 ssh user@localhost $SHELL
.
라이브 CD/USB로 부팅하고 수동으로 마운트 /
하고 수정할 수도 있습니다 /etc/passwd
.
답변2
나도 같은 문제가 있습니다. 이 솔루션이 저에게 효과적입니다.
- 라이브 모드에서 라이브 CD(저는 debían 7.6 사용)로 부팅합니다.
- 라이브 터미널에서 다음 명령을 실행하여 루트 액세스 권한을 얻으세요.
passwd root
- 크래시 배포판 파티션의 디스크를 마운트합니다.
- 이 디스크로 이동하여 다음 명령을 실행하십시오.
cat etc/shells
nano etc/passwd
물고기 참조를 제거하고 포인트 4의 유효한 콘솔 이름을 입력하십시오 .- 재부팅하고 즐기십시오.
답변3
로그인하려고 할 때 다음 메시지가 나타납니다. /sbin/nologin을 실행할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.
이것이 내가 한 일이고 그것은 나에게 효과적이었습니다.
- 슈퍼유저 권한이 있는 다른 계정으로 시스템에 로그인했습니다.
- 다음 명령을 입력하십시오.
sudo chsh -u 사용자 -s $SHELL
여기서 user는 문제가 있는 계정 이름입니다.
- 시스템 로그아웃
- 문제가 발생한 계정 이름으로 로그인하세요.
답변4
Elementary OS Loki에서도 동일한 문제에 직면했습니다. 문제를 해결하기 위해 다음을 수행했습니다.
- 먼저 zsh와 관련된 모든 것을 제거합니다.sudo apt-get zsh 제거 && apt-get 자동 제거
- 그 후에 내가 편집했어/etc/passwd파일을 찾아보니 루트 사용자의 쉘이 정의되어 있지 않아서 쉘 /bin/bash를 편집했는데 이 모든 것이 문제 해결에 도움이 되었습니다.