Доступ к корню ssh запрещен после смены оболочки

После того, как я попытался изменить свою серверную оболочку, я больше не могу войти в систему как root.

Сначала я установил z-оболочку (zsh) от имени пользователя root, а затем мне захотелось изменить ее на оболочку по умолчанию. Поэтому я использовал "чш". Моя вина была в том, что я набрал неправильный путь. После выхода из системы и нового входа через Putty я получил сообщение "Доступ запрещен".

Это было предсказуемо, когда пути к оболочке не существует. Поэтому я вошел в свою панель управления и изменил файл / etc / passwd через filemanager: я исправил неверную последнюю часть первой строки - пользователь root:

корень: х:0:0: корень: / корень: / USR / бен / ЗШ

Даже если я изменю его на старый shell / bin / bash или / bin / sh, он не будет работать. Я прочитал, что passwd & shadow не являются live-файлами, поэтому я перезапустил сервер, но проблема все та же

Любые идеи, что еще я мог сделать?

ОС: Debian 5 + Parallels Plesk 11

2 ответа

Решение

Я нашел решение на другом форуме. Возможно, этот подход может помочь и всем людям с одинаковой проблемой:

Мой провайдер изменил пароль root и попробовал "chsh -s /bin/bash root", который не работал, потому что пароль не был принят и произошла следующая ошибка: "chsh: PAM-аутентификация не удалась".

dave_mystic дал решение:

Настоящая проблема в /etc/pam.d/chsh. В этом файле строка, которая запрещает пользователям переходить обратно в обычную оболочку после назначения специальной оболочки, появляется перед строкой, которая разрешает все изменения из корня.

К сожалению, следующая строка запускалась первой, запрещая изменение, потому что пользовательская оболочка НЕ ​​была в списке доступных оболочек. Строка авторизации от моего имени "root" через sudo никогда не запускалась, потому что она никогда не проверялась после запуска первой строки.

требуется авторизация pam_shells.so

Решением было временно закомментировать строку в /etc/pam.d/chsh, изменить оболочку пользователя на правильную, а затем удалить комментарий в строке.

Источник: http://ubuntuforums.org/showthread.php?t=1702833

Поэтому я прокомментировал упомянутую строку и после этого смог сменить оболочку.

  1. Всегда используйте vipw отредактировать /etc/passwd и vipw -s отредактировать / etc / shadow.
  2. Убедитесь, что оболочки, которые вы пытаетесь использовать, перечислены в / etc / shells.
  3. Убедитесь, что SElinux не установлен на "принудительное применение" в /etc/selinux/config. Измените его на "разрешающий" или "отключенный". [требуется перезагрузка]
  4. Если вы хотите попробовать новую оболочку , не выходите из системы, чтобы протестировать ее. Запустите дополнительный сеанс SSH или tty и оставьте текущий запущенным на случай, если вы его нажмете.
  5. Проверьте свои журналы на наличие ошибок, относящихся к процессу входа, которые могут указывать на то, что еще не так.

Если вы все еще не можете это исправить самостоятельно, обратитесь к вашему хостинг-провайдеру. Они либо узнают, как это исправить в течение 10 минут, либо вы должны найти лучшего хозяина.

Ответ для меня пришел отсюда

Оказалось, я был небрежен, когда пытался chsh моя оболочка:

grep peter /etc/passwd
peter:1001:1001::/home/peter:/bin/nash

"nash", очевидно, должно было быть "bash"

Решением было вернуть его обратно с помощью usermod:

sudo usermod --shell /bin/bash peter

Тогда я снова смогу войти по ssh.

Другие вопросы по тегам