로그인할 수도 없을 때 "로그인: 셸 없음: 해당 파일 또는 디렉터리 없음"을 어떻게 수정합니까?

로그인할 수도 없을 때 "로그인: 셸 없음: 해당 파일 또는 디렉터리 없음"을 어떻게 수정합니까?

설치했습니다물고기 물고기(사용자 친화적인 대화형 명령줄 셸)을 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

나는 같은 문제가 있었고 이 솔루션이 나에게 효과적이었습니다.

  1. 라이브 모드에서 Live CD를 사용하여 부팅합니다(저는 debían 7.6을 사용합니다).
  2. 라이브 터미널에서 다음 명령을 실행하여 루트 액세스 권한을 얻습니다.passwd root
  3. 손상된 배포 파티션의 디스크 마운트
  4. 해당 디스크로 이동하여 다음 명령을 실행합니다.cat etc/shells
  5. nano etc/passwd물고기 참조를 제거 하고 포인트 4에서 유효한 콘솔 이름을 입력하십시오.
  6. 재부팅하고 즐기십시오.

답변3

로그인을 시도하면 다음 메시지가 나타납니다. /sbin/nologin을 실행할 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

이것이 내가 하는 일이고 그것은 나에게 효과적이다.

  1. 슈퍼 사용자 권한이 있는 다른 계정을 사용하여 시스템에 로그인합니다.
  2. 다음 명령을 입력하십시오.

sudo chsh -u 사용자 -s $SHELL

여기서 user는 문제의 계정 이름입니다.

  1. 출구 시스템
  2. 문제가 있는 계정 이름을 사용하여 로그인

답변4

Elementary OS Loki에서도 동일한 문제가 발생했습니다. 문제를 해결하기 위해 다음을 수행했습니다.

  1. 먼저 zsh와 관련된 모든 것을 삭제했습니다.sudo apt-get delete zsh && apt-get 자동 삭제
  2. 나중에 편집했어요/etc/비밀번호파일을 검색하고 루트 사용자의 쉘이 정의되지 않았음을 발견하여 /bin/bash 쉘을 편집했는데 이 모든 것이 문제 해결에 도움이 되었습니다.

관련 정보