
Я люблю рыбу. У меня есть хороший сервер Ubuntu 8.04, на котором запущены некоторые службы. Поэтому я отредактировал файл /etc/passwd, как я делал раньше, чтобы изменить оболочку по умолчанию с bash на fish. И да, я сделал опечатку (кстати: я знаю о chsh, просто я такой глупый и самоуверенный). Пожалуйста, перестаньте смеяться.
Как и ожидалось, теперь я не могу войти. Возможно ли войти без перезагрузки сервера? Я знаю, что могу перезапустить сервер в безопасном режиме и решить проблему, но я хотел бы этого избежать.
Ах да, у меня нет других пользователей с правами sudo на этом сервере. Перестань смеяться снова.
Кстати, я натворил дел, используя SSH, но у меня есть легкий физический доступ к серверу, он всего в паре комнат от меня.
решение1
К сожалению, нет; вы заблокировали себя. SSH не позволит вам войти, если оболочка отсутствует. Вот как выглядит попытка в /var/log/auth.log
:
Dec 23 15:04:59 ubuntu sshd[5585]: User kees not allowed because shell /bin/fish does not exist
И вход в консоль TTY всегда будет пытаться запустить вашу настроенную оболочку. Без другого пользователя с sudo
правами вам придется загрузиться в однопользовательском режиме, чтобы исправить это. :(
решение2
Если у вас установлен пароль root, вы можете либо войти в систему как root на самой машине (в X или на виртуальной консоли, нажав alt-F1), либо удаленно войти как пользователь без прав sudo, а затем переключиться на root с помощью su
терминала.
Конечно, по умолчанию Ubuntu не позволяет вам входить в систему как пользователь root, поэтому предполагается, что вы ранее изменили это.
решение3
Если вы хотите восстановить некоторые файлы конфигурации до предыдущего состояния, вы всегда можете попробовать отредактировать их, загрузив сервер с Live-версии какого-нибудь компакт-диска Ubuntu, смонтировав реальный раздел, где находятся файлы /etc, и отредактировав их с помощью vi.
Вы также можете отредактировать файл /etc/sudoers, чтобы предоставить большему количеству пользователей права root.