Изменена оболочка и не удается войти в систему по ssh

Я использовал команду usermod -s /bin/fish root изменить оболочку пользователя root, и теперь я не могу войти в свою учетную запись root. Почему это происходит?

Я пытаюсь SSH на сервер под управлением Ubuntu через Putty на Windows. При получении разрешения отказано в ошибке.

2 ответа

Решение

Прежде всего, если вы все еще вошли в систему с помощью другой оболочки: не выходите из системы.
(Вот почему вы всегда тестируете перед выходом из системы).

Во-вторых, можете ли вы войти через другого пользователя?
Имеет ли этот другой пользователь (uid 0), затем используйте его, чтобы проверить, установлен ли /bin/fish не только, но также и в /etc/shells (список разрешенных оболочек). Если это не так, добавьте еще раз.

Если этому пользователю разрешено использовать su или sudo, попробуйте что-то вроде sudo /usr/local/bin/bash,

если все это не удалось, то вам нужно войти в систему другим способом. Тим init=/bin/sh это традиционное решение для людей с физическим доступом к своим серверам. (HP ILO или DRAC от Dell также будут заменять физический доступ).

Из загрузчика LILO это будет сделано с init=/bin/sh и сопровождается mount -o remount,rw / после входа в систему (иначе / будет только для чтения, что затруднит исправление ошибок). Из grub выберите опцию, которая позволяет редактировать параметры ядра. Добавьте либо 1 (для режима запуска 1, он же однопользовательский) или "одиночный" до конца параметров ядра.

Если ничего из этого не применимо, вам придется физически удалить диск и атаковать его в ОС, где у вас есть полный доступ, чтобы исправить его.

Если оболочка не установлена, вы сразу после входа в систему блокируетесь, потому что оболочка не может быть загружена.

Если вы не используете sudo и не запускаете linux, вы можете передать ядру корректную оболочку в grub/lilo. Подобно:

init=/bin/sh 
Другие вопросы по тегам