Подобное сообщение появляется если попытаться залогиниться под пользователям, для которого был установлен альтернативный shell, который был впоследствии удалён. Самый эпик фейл, если этим пользователем является root.

su
Password:
su: failed to execute /usr/bin/zsh: No such file or directory

Но ничего страшного, выход есть! Чтобы поменять оболочку для рута не имея доступа к аккаунту придётся загрузиться с LiveCD и вручную поправить файл /etc/passwd.

Если прямого доступа к серверу нет, то тоже ничего страшного. Большинство нормальных хостеров предлагают консоль для восстановления. У нормальных хостеров её можно включить автоматически и бесплатно. Из недостатков данного метода — простой сервера во время восстановления, Но займёт он не более 5 минут.

Для простоты я будут использовать термин LiveCD, хотя никакого CD в данном случае не существует. У Hetzner Resue система работает так:  после активации системы спасения на нашем DHCP-сервере будет создан файл конфигурации. При следующей перезагрузке ваш сервер будет загружаться из сети, и с нашего TFTP-сервера будет загружена минимальная операционная система. Тогда вы сможете использовать спасательную систему столько, сколько захотите. Заказ на спасательную систему будет активен в течение 60 минут. Если вы перезагрузите сервер, будет запущена обычная установленная система.

Для Hetzner нужно зайти в панель robot, Выбрать сервер, затем вкладку Rescue. Выбрать операционную систему для LiveCD и её архитектуру, для CentOS 7 подойдёт Linux 64. Затем нажать кнопку Activare resque system, после чего появится сообщения с подобным содержимым:

After the next reboot your server will boot from the rescue system.

Then you can access your server, using the user name "root" and the following password: xdpxbqaUR7c2Bj

Нужно запомнить пароль для LiveCD системы. Затем нужно перейти в о вкладку Reset, выбрать пункт Execute an automatic hardware reset и нажать кнопку Send. Всё, теперь нужно заново подключиться к серверу по ssh под логином и паролем указанным в сообщении из прошлого шага. Теперь самое интересное, нужно примонтировать физические диски в LiveCD образ. Подробнее можно почитать в документации Hetzner. В моём случае был софтварный RAID, для начала нужно получить список разделов:

ls /dev/md*

В моём случае найдены:

/dev/md0 /dev/md1 /dev/md2 /dev/md3

Далее нужно примонировать корневой раздел в любую директорию, например в стандартную /mnt:

mount /dev/md2 /mnt

Скорее всего и у вас корневой раздел будет /dev/md2.

Теперь нужно отредактировать файл /etc/passwd:

nano /etc/passwd

Если файл не найден, значит примонтировать не правильный раздел. Сначала нужно отмонтировать текущий:

umount /mnt

А затем примонтировать следующий, до тех пор, пока не будет найден корневой.

Теперь нужно поменять первую строчку с:

root:x:0:0:root:/root:/usr/bin/zsh

На:

root:x:0:0:root:/root:/bin/bash

Сохранить, выйти и сделать reboot.

Ссылки

  • https://wiki.hetzner.de/index.php/Hetzner_Rescue-System/ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть