Изменена оболочка и не удается войти в систему по 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