Как восстановить пароль root-пользователя на Linux-сервере?

«Как восстановить пароль root-пользователя на Linux-сервере?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Восстановление пароля root требует физического или консольного (KVM) доступа к серверу и перезагрузки. Это критичная операция, которая приводит к простою.

Пошаговый процесс для систем с GRUB2 (актуален для большинства современных дистрибутивов):

  1. Перезагрузите сервер и во время загрузки удерживайте Shift (или нажмите Esc), чтобы вызвать меню GRUB.
  2. Выберите строку с нужным ядром Linux и нажмите клавишу e для редактирования параметров загрузки.
  3. Найдите строку, начинающуюся с linux или linux16/linuxefi. В конце этой строки добавьте init=/bin/bash (или rd.break для систем с initramfs, например, RHEL/CentOS).
  4. Нажмите Ctrl+X или F10 для загрузки с этими параметрами. Система загрузится прямо в оболочку bash с правами root.
  5. Перемонтируйте корневую файловую систему в режиме чтения-записи:
    mount -o remount,rw /

    Для rd.break сначала выполните mount -o remount,rw /sysroot и chroot /sysroot.

  6. Измените пароль root:
    passwd root

    Введите новый пароль дважды.

  7. Для систем с SELinux (RHEL, CentOS, Fedora) создайте файл-маркер, чтобы перемаркировать контексты при следующей загрузке:
    touch /.autorelabel
  8. Перезагрузите систему:
    exec /sbin/init 6
    # или просто
    reboot -f

Важные замечания для DevOps:

  • Избегайте использования пароля root. Настройте аутентификацию по SSH-ключам и использование sudo для привилегированных команд.
  • Для аварийного доступа в облачных средах (AWS EC2, GCP, Azure) используйте предоставляемые механизмы восстановления (например, серийную консоль в AWS или сброс пароля через панель управления).
  • В инфраструктуре как код (IaC) доступ должен настраиваться автоматически (например, через cloud-init или Ansible), а не вручную.