설치했습니다물고기 물고기(사용자 친화적인 대화형 명령줄 셸)을 Linux 서버에 설치했는데 나중에 누군가가 이를 제거했지만 잘 모르겠습니다. 이제 chsh -s /usr/local/bin/fish
실수로 서버를 실행한 후 서버에 로그인할 수 없습니다 . "로그인: 셸 없음: 해당 파일이나 디렉터리가 없습니다"라는 오류 메시지가 표시됩니다. 이는 분명히 Shellfish가 더 이상 존재하지 않음을 나타냅니다.
서버에서는 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
.
Live CD/USB로 부팅하여 수동으로 설치 /
및 복구 할 수도 있습니다 /etc/passwd
.
답변2
나는 같은 문제가 있었고 이 솔루션이 나에게 효과적이었습니다.
- 라이브 모드에서 Live 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 delete zsh && apt-get 자동 삭제
- 나중에 편집했어요/etc/비밀번호파일을 검색하고 루트 사용자의 쉘이 정의되지 않았음을 발견하여 /bin/bash 쉘을 편집했는데 이 모든 것이 문제 해결에 도움이 되었습니다.