
Я установилрыбарыба(удобная для пользователя интерактивная оболочка командной строки) на сервере Linux, позже кто-то удалил ее, но я не знаю об этом. После того, как я запустил ее chsh -s /usr/local/bin/fish
без предупреждения, я теперь не могу войти на сервер. Появилось сообщение об ошибке "login: no shell: No such file or directory", которое, по-видимому, говорит о том, что shell fish больше не существует.
Сервер предоставляет только интерфейс командной строки (CLI). Как я могу изменить оболочку входа, если я даже не могу войти в систему?
решение1
Если у вас есть доступ к учетной записи root, вы можете изменить оболочку для пользователя оттуда с помощью chsh -u user -s $SHELL
.
Если у вас есть доступ к процессу загрузки, вы можете добавить init=$SHELL
его в однопользовательскую оболочку, где вы можете это исправить, опять же с помощью chsh -u user -s $SHELL
(некоторые системы, использующие двухэтапную загрузку с образом initrd, могут потребовать от вас использовать 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 (я использую Debian 7.6) в режиме Live.
- В терминале получите права root, выполнив команду:
passwd root
- Смонтируйте диск раздела вашего дистрибутива, на котором произошел сбой
- Перейдите на этот диск и выполните следующую команду:
cat etc/shells
- Удалим
nano etc/passwd
ссылки на рыбу и введем допустимое имя консоли для пункта 4. - Перезагрузите и наслаждайтесь.
решение3
При попытке входа в систему я получил следующее сообщение: Невозможно выполнить /sbin/nologin: нет такого файла или каталога
Я так и сделал, и мне это помогло.
- Я вошел в систему с помощью другой учетной записи с правами суперпользователя.
- Введите следующую команду:
sudo chsh -u пользователь -s $SHELL
где пользователь — имя учетной записи, в которой возникла проблема
- Выход из системы
- Войдите в систему, используя имя учетной записи, с которой возникла проблема.
решение4
Я также столкнулся с той же проблемой в Elementary OS Loki. Чтобы решить проблему, я выполнил следующее
- во-первых я удаляю все, что связано с zshsudo apt-get удалить zsh && apt-get autoremove
- после этого я отредактировал/etc/парольфайл и обнаружил, что оболочка пользователя root не определена, поэтому я отредактировал оболочку /bin/bash, и все это помогло мне решить проблему.