Как сбросить пароль root на Linux

Итак, в ряде случаев при попытке войти под пользователем root нас радует вот такая картинка:

Или что-то подобное.

Помню, как холодный пот прошиб, когда увидел это на основном межсетевом экране и точно знал, что я не опечатался в написании пароля.

Причины

Причин такого явления несколько:

  1. Вас взломали. Достаточно частое явление, на самом деле, которое фактически означает полную компрометацию системы и требует принятия незамедлительных мер реагирования.
  2. Всё-таки банальная опечатка. Учитывая, что Linux-образные системы не отображают вводимые символы даже с маской, мы зачастую не представляем, что вводим на самом деле. Два примера из практики – одна из клавиатур вдруг перестала пропечатывать цифру “6” на основной части. В другом случае – Bluetooth-клавиатура заглючила и ддублирррррроваала некоторые символы просто бешенно. Разумеется, я не смог войти в систему, пока не разобрался с аппаратной частью.
  3. Пароль забыл/утрачен. Сменён легитимно (вчера отмечали день сисадмина, меняли пароли, наутро всё забыли).

Что делать

Действия в случае компрометации системы заслуживают отдельной статьи. А действия в случае сбоя клавиатуры решаются банальной заменой. Как быть, если нужно восстановить контроль над системой и сбить пароль root на свой?

С использованием монопольного доступа (single-mode)

  1. Если у вас не стоит пароль на загрузчик (или хотябы он вам известен), то после перезагрузки идём в меню загрузчика:Руководствуемся текстовыми подсказками внизу экрана.
  2. Нажимаем “e” на клавиатуре на выбранной записи загрузчика (последняя версия ядра у меня сверху).
  3. В появившемся редакторе загрузочной записи ищем загрузку ядра (строка, начинающаяся с kernel) и нажимаем “e” на этой строке.
  4. Дописываем в конец строки “single” либо “1” и нажимаем Enter для применения изменений. Отобразится предыдущее меню, в котором жмякаем “b” для загрузки этой загрузочной записи и…
  5. Загрузится ОС и сразу провалится в оболочку под uid=0 без требования ввести пароль root. Этим и воспользуемся, убедимся, что корневой раздел подмонтирован в режиме записи, сменим пароль root и перезагрузимся:
    # mount
    # passwd root
    # reboot

  6. Более современные версии ОС выглядят немного пугающе, если залезть внутрь загрузочной записи. Вот пример с Kali Linux и Grub2:
    Бояться не стоит. Ищем строку с ядром (начинается с linux) и находим там параметр quiet, стираем и вместо него пишем “init=/bin/bash” – после инициализации ядра запустится командный интерпретатор bash. Ну а дальше – аналогично:
    Убедимся, что файловая система подмонтирована в режиме “rw” – здесь это не так, о чём свидетельствует флаг “ro” под первой стрелкой. Перемонтируем её с флагами “rw” и убеждаемся, что всё успешно (вторая стрелка). Ну а дальше – просто переустанавливаем пароль. Файловую систему делать в rw обязательно, т.к. в режиме только чтения (ro) она не позволит модифицировать файл /etc/shadow, в котором у нас находится хеш пароля.
  7. И ещё вариант для совсем безбашенных. Действуем аналогично и редактируем файл /etc/shadow напрямую (стираем оттуда хеш пароля полностью). Тогда можно будет войти под данным пользователем без ввода пароля.

С использованием загрузочного диска

Эта задача как правило чуть более творческая. В качестве загрузочных Linux-дистрибутивов можно использовать что угодно, Live-версии есть почти у всех популярных ОС: Kali, Ubuntu, Debian, так и у специализированных (которые я и рекомендую – Deft Zero, CAINE…).

Покажу на примере Deft, чтобы не быть голословным.

# mkdir /mnt/remote

Создали каталог, куда будем монтировать файловую систему целевой ОС.

# hdparm -r 0 /dev/sda

Т.к. в Deft все устройства монтируются в режим “только чтение”, нужно отключить этот режим для целевого дискового устройства, иначе ничего поменять не получится.

# modprobe dm-mod

Загружаем модуль ядра, отвечающий за работу с LVM (у меня сложный случай – корневой раздел в LVM), если б этого не было – многих шагов можно было избежать. Подробнее про работу с LVM я писал здесь (очень рекомендую).

# vgscan

Сканирование устройств на предмет созданных виртуальных групп томов. Обнаружена группа “vg_vpnsrv”, запомним это название.

# vgchange -ay vg_vpnsrv

Подключаем выбранную группу

# lvs

Определяем наименования разделов внутри виртуальной группы

# mount /dev/vg_vpnsrv/lv_root /mnt/remote -o rw

Монтируем корневой раздел в наш каталог в режиме записи.

Ну а дальше действуем, например, согласно п.7 предыдущего раздела.

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply