Назад | Перейти на главную страницу

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

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

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

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

корень: x: 0: 0: корень: / корень: / usr / bin / zsh

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

Есть идеи, что еще я мог сделать?

ОС: Debian 5 + Parallels Plesk 11

  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.

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

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

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

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

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

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

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

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

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