Как сбросить пароль root в Linux: Ubuntu, Debian, AlmaLinux

Забытый пароль root не означает потерю сервера. Если у вас есть доступ к консоли — физической или VNC в панели управления хостинга, — пароль можно заменить за несколько минут. Способ зависит от дистрибутива и от того, какой доступ у вас остался.
Сначала проверьте простые варианты
У вас есть пользователь с правами sudo. Тогда перезагрузка не нужна:
sudo passwd root
Вы входите по SSH-ключу. Если вход под root по ключу работает, пароль можно сменить командой passwd без ввода старого.
Панель управления хостинга. У многих провайдеров сброс пароля или переустановка доступа доступны прямо в панели управления сервером. Проверьте этот вариант, прежде чем перезагружать сервер.
Если ничего из этого не подходит, понадобится консоль сервера. На VPS это VNC-консоль в панели управления: SSH для этой задачи не подойдёт, потому что нужно вмешаться в процесс загрузки.
Ubuntu и Debian: сброс через GRUB
- Перезагрузите сервер и дождитесь меню загрузчика GRUB. Если меню не появляется, сразу после начала загрузки удерживайте
Shift(на системах с BIOS) или несколько раз нажмитеEsc(на системах с UEFI). - Выберите основную запись и нажмите
e, чтобы отредактировать параметры загрузки. - Найдите строку, которая начинается со слова
linux. В её конце заменитеroнаrwи добавьтеinit=/bin/bash:
linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash
- Нажмите
Ctrl+XилиF10. Система загрузится в командную строку с правами root без запроса пароля. - Задайте новый пароль:
passwd
- Запишите изменения на диск и перезагрузите сервер:
sync
reboot -f
Изменение параметров загрузки действует один раз: при следующей перезагрузке система запустится как обычно.
AlmaLinux, Rocky Linux, RHEL: режим rd.break
В этих системах дополнительно нужно учесть SELinux.
- Перезагрузите сервер, в меню GRUB выберите основную запись и нажмите
e. - Найдите строку, начинающуюся с
linux, и добавьте в её конецrd.break. - Нажмите
Ctrl+X. Загрузка остановится на раннем этапе с приглашениемswitch_root:/#. - Перемонтируйте системный раздел для записи и перейдите в него:
mount -o remount,rw /sysroot
chroot /sysroot
- Задайте новый пароль:
passwd
- Создайте файл, по которому SELinux заново расставит метки при загрузке. Без этого шага войти в систему не получится:
touch /.autorelabel
- Выйдите и продолжите загрузку:
exit
exit
Перемаркировка файлов занимает от пары минут до получаса в зависимости от размера диска. Сервер перезагрузится сам — не прерывайте процесс.
Если режим rd.break запрашивает пароль root, используйте вместо него параметр init=/bin/bash, как в инструкции для Ubuntu, и после смены пароля также выполните touch /.autorelabel.
Способ для любого дистрибутива: rescue-режим
Если загрузчик защищён паролем или отредактировать его параметры не удаётся, загрузите сервер с Live-образа или в режиме восстановления (rescue), который есть в панели управления у многих провайдеров.
- Определите корневой раздел установленной системы:
lsblk -f
- Смонтируйте его и перейдите в установленную систему:
mount /dev/sda2 /mnt
chroot /mnt
- Смените пароль и выйдите:
passwd
exit
umount /mnt
Для систем с SELinux перед выходом выполните touch /.autorelabel. После этого загрузите сервер с основного диска.
Если диск зашифрован (LUKS), сначала его нужно открыть командой cryptsetup open — для этого потребуется парольная фраза шифрования. Без неё восстановить доступ к данным невозможно.
Что сделать после восстановления
- Проверьте, что вход работает, прежде чем закрывать консоль.
- Настройте вход по SSH-ключам — тогда пароль root понадобится только в консоли: см. инструкцию по SSH.
- Создайте отдельного пользователя с sudo. В следующий раз пароль root можно будет сменить без перезагрузки.
- Сохраните пароль в менеджере паролей — например, в собственном Vaultwarden.
Почему это вообще возможно
Тот, у кого есть доступ к консоли сервера, может получить права root — это свойство любой системы, а не уязвимость Linux. Поэтому доступ к панели управления хостинга нужно защищать не слабее, чем сам сервер: надёжным паролем и двухфакторной аутентификацией.


