Сброс root пароля в Linux может потребоваться, если вы забыли пароль или по какой-то причине не можете войти в систему под учетной записью root. Процесс может немного отличаться в зависимости от используемого дистрибутива Linux и его системы инициализации (systemd, SysVinit и т. д.). Вот общие шаги, которые, скорее всего, сработают в большинстве случаев:
Важно: Внимательно следуйте инструкциям. Неправильные действия могут привести к повреждению системы.
I. Загрузка в однопользовательский режим (Single User Mode) или режим восстановления (Rescue Mode):
Перезагрузите компьютер: Перезапустите вашу систему.
Прервите процесс загрузки: Во время загрузки, до появления экрана входа в систему, вам нужно прервать нормальный процесс загрузки. Способ прерывания зависит от вашей системы:
GRUB (Legacy BIOS или UEFI): Нажмите и удерживайте клавишу Shift во время загрузки. Если у вас только одна операционная система, меню GRUB может не отображаться по умолчанию. Удержание Shift должно его вызвать.
Systemd-boot (UEFI): Нажмите клавишу Пробел (Spacebar) во время загрузки.
Появится меню загрузчика (GRUB или systemd-boot).
Выберите ядро Linux: В меню загрузчика выберите ядро Linux, которое вы обычно используете для загрузки вашей системы.
Редактируйте параметры загрузки: Нажмите клавишу E (для GRUB) или E (для systemd-boot) для редактирования параметров загрузки выбранного ядра.
Добавьте Init=/bin/bash или Rd. break enforcing=0 в параметры загрузки: В строке, начинающейся с linux или linuxefi, добавьте один из следующих параметров в конец строки (перед тем, как нажать Ctrl+X):
Init=/bin/bash (старый способ, может не работать в современных системах): Этот параметр указывает системе запустить оболочку Bash (/bin/bash) вместо обычной системы инициализации (systemd или SysVinit). Это предоставит вам оболочку root, где вы сможете изменить пароль.
Или
Rd. break enforcing=0 (более современный способ, особенно для систем с SELinux): Этот параметр останавливает процесс загрузки на раннем этапе, перед монтированием корневой файловой системы. enforcing=0 отключает SELinux (если он включен), что упрощает изменение пароля.
Пример строки с Init=/bin/bash (GRUB):
Linux /boot/vmlinuz-5.15.0-76-generic root=UUID=… ro quiet splash init=/bin/bash
Пример Строки С Rd. break enforcing=0 (GRUB):
Linux /boot/vmlinuz-5.15.0-76-generic root=UUID=… ro quiet splash rd. break enforcing=0
Загрузитесь с измененными параметрами: Нажмите Ctrl+X (для GRUB) или Ctrl+Enter (для systemd-boot), чтобы загрузиться с измененными параметрами.
II. Сброс пароля root:
Если вы использовали Init=/bin/bash:
Вы окажетесь в оболочке Bash с правами root. Корневая файловая система может быть смонтирована в режиме “только чтение”. Чтобы иметь возможность изменять ее, смонтируйте ее в режиме “чтение-запись”:
Mount — o remount, rw /
Измените пароль root с помощью команды passwd:
Passwd
Вам будет предложено ввести новый пароль и подтвердить его.
Перезагрузите систему:
Exec /sbin/init
Или
Reboot — f
Если вы использовали Rd. break enforcing=0:
Вы окажетесь в оболочке dracut. Корневая файловая система смонтирована в /sysroot, но находится в режиме “только для чтения”. Необходимо ее перемонтировать в режиме чтения/записи:
Mount — o remount, rw /sysroot
Перейдите в chroot в вашу обычную корневую файловую систему:
Chroot /sysroot
Измените пароль root с помощью команды passwd:
Passwd
Вам будет предложено ввести новый пароль и подтвердить его.
Если SELinux был включен, необходимо перемаркировать файловую систему для SELinux. Это необходимо для того, чтобы SELinux работал правильно после сброса пароля.
Touch /.autorelabel
Выйдите из chroot:
Exit
Перезагрузите систему:
Exit
(Эта команда выведет вас из dracut и перезагрузит систему.)
III. Вход в систему с новым паролем:
После перезагрузки вы сможете войти в систему под учетной записью root с новым паролем.
Альтернативный способ (только для systemd):
Если в вашей системе используется systemd, можно использовать команду systemd-passwd для изменения пароля root. Этот способ может быть проще, чем использование однопользовательского режима.
Загрузитесь в однопользовательский режим, как описано выше (используя init=/bin/bash).
Смонтируйте корневую файловую систему в режиме “чтение-запись”:
Mount — o remount, rw /
Запустите команду systemd-passwd:
Systemd-passwd root
Вам будет предложено ввести новый пароль и подтвердить его.
Перезагрузите систему:
Exec /sbin/init
Если вы используете шифрование диска (например, LUKS):
Если ваш диск зашифрован, вам сначала потребуется разблокировать диск, прежде чем выполнять какие-либо из вышеперечисленных шагов. Это может потребовать ввода парольной фразы или использования ключа восстановления.
Рекомендации:
После сброса пароля запишите его в надежном месте.
Включите SELinux обратно (если вы его отключили). Если вы использовали rd. break enforcing=0, то touch .autorelabel должно перемаркировать файловую систему при следующей загрузке, и SELinux включится автоматически.
Рассмотрите возможность использования SSH ключей для входа в систему. SSH ключи более безопасны, чем пароли.
Регулярно делайте резервные копии вашей системы.
Следуя этим инструкциям, вы сможете успешно сбросить пароль root в Linux. Однако, будьте внимательны и осторожны, чтобы не повредить вашу систему. Если вы не уверены в своих силах, обратитесь к опытному пользователю Linux или системному администратору.