Enter root password for maintenance — Сброс пароля root в systemd
Архитектура ошибки и симптомы сбоя
Сообщение «Give root password for maintenance (or press Control-D to continue)» (или «Enter root password for maintenance») отображается утилитой sulogin при переходе в режим восстановления. Проблема становится критической, если в дистрибутиве (Ubuntu, Debian, Cloud-Init образы) учетная запись root заблокирована (пароль отсутствует, в /etc/shadow стоит ! или *). Администратор не может войти в консоль для исправления проблем с дисками или сервисами.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| sulogin | Single-User Login Utility | Утилита запроса пароля root перед предоставлением аварийного шелла. |
| Locked Root Account | /etc/shadow (!) | По умолчанию на Ubuntu/Debian пароль root отсутствует, вход через sulogin невозможен. |
| Bypass Vector | init=/bin/bash / rd.break | Переопределение первого процесса ядра через загрузчик GRUB. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Обход запроса пароля sulogin через GRUB (init=/bin/bash)
- Перезагрузите сервер и в меню GRUB нажмите клавишу
e. - Найдите строку, начинающуюся с
linux(илиlinux16/linuxefi). - Удалите параметры
rhgb quietи допишите в конец строки:init=/bin/bash(для RHEL/CentOS можно использоватьrd.break). - Нажмите
Ctrl+XилиF10для загрузки прямо в корневой shell без запроса пароля.
Сценарий 2: Установка пароля root и перевод корня в Read-Write
# Перемонтируйте корень в режим записи:
mount -o remount,rw /
# Установите новый пароль суперпользователя root:
passwd root
# Для RHEL/CentOS с SELinux создайте флаг автоперемаркировки:
touch /.autorelabel
# Синхронизируйте буферы и перезагрузитесь:
sync
reboot -fСценарий 3: Настройка systemd sulogin без запроса пароля в /etc/systemd
Чтобы в будущем аварийный шелл открывался автоматически без запроса пароля root:
# Создайте override для emergency и rescue сервисов:
sudo systemctl edit emergency.service
# Вставьте конфигурацию:
[Service]
ExecStart=
ExecStart=-/sbin/sulogin --force
# Повторите для rescue.service:
sudo systemctl edit rescue.serviceITSTM восстановит административный доступ к физическим и облачным серверам (AWS, GCP, Hetzner, VK Cloud, Selectel) в кратчайшие сроки.
Частые вопросы (FAQ)
Почему Ubuntu блокирует пароль root по умолчанию?
В целях безопасности: для повседневного администрирования используется механизм sudo от имени непривилегированного пользователя, что снижает риск случайных деструктивных действий.
Что делать, если параметр init=/bin/bash приводит к kernel panic?
Убедитесь, что передали параметр 'rw' вместе с init=/bin/bash, либо используйте загрузку с LiveCD/Rescue ISO и выполните chroot в целевую систему.
Как разблокировать аккаунт root без смены пароля?
В файле /etc/shadow замените восклицательный знак 'root:!:' на хеш валидного пароля или разблокируйте через 'usermod -U root'.
Что такое rd.break в дистрибутивах семейства Red Hat?
Параметр rd.break останавливает процесс загрузки внутри initramfs до того, как реальная корневая система будет смонтирована в /sysroot, позволяя безопасно восстановить доступ к диску.