Как я восстановил окирпиченный Linux без доступа к учеткам

Всем привет!!

Стоит внести небольшое предисловие, что пароль от учетки забыл не я, а мой товарищ, но я помог ему восстановить доступ.

Как все было?

У моего друга, назовем его Максим, есть домашний сервер, который достался ему от его знакомого. Но проблема была в том, что Максим со временем забыл пароль от своей учетки, потому что около 1.5 лет не пользовался сервером, а знакомый, от которого он получил сервак, тоже не помнит данных от своей учетки.

Что мы имеем?

А мы имеем кирпич. Никто не знает данных от своих учеток, на сервер не пробраться, как-то сбросить пароль не получается.

Как решали?

Тут возможны два варианта:

  1. Если стоит пароль на загрузчик

  2. Если не стоит пароль на загрузчик (решение - дело 2-х минут)

Начну со второго, тут все просто и по пунктам

  1. загружаем в режиме восстановления

  2. Если у вас появилось окно с выбором ОС, то выбираем нужную, которую хотим восстановить и НЕ нажимаем Enter, а нажимаем E и попадаем в редактор, если назвать это коротко.

  3. Если меню GRUB не отображается, нажимайте клавишу Shift (для BIOS) или Esc (для UEFI) сразу после включения сервера.

  4. Далее мы должно поменять параметры загрузки

    1. Найти строку, которая начинается с linux или linux16

    2. В конце строки добавить init=/bin/bash

      1. Строка должна быть похожа примерно на это, но не обязана иметь все параметры, например, в моем случае не было quiet и splash , а вот init=/bin/bash как раз то, что нам и нужно дописать.

      2. linux /boot/vmlinuz-5.15.0-56-generic root=UUID=12345678-1234-1234-1234-123456789abc ro quiet splash init=/bin/bash
        

    3. Ctrl+X или F10, чтобы загрузиться с измененными параметрами

  5. Данные манипуляции должны были загрузить нас в однопользовательском режиме от рута.

  6. Далее просто меняем пароль, как у обычного пользователя, но сначала надо примонтировать корневую файловую систему.

    1. mount -o remount,rw /
      passwd имя_пользователя  # меняем пароль по обычной схеме
      reboot  # после смены пароля перезапускаем сервер и уже загружаемся в обычном режиме и вводим новый пароль

Если у вас все таки стоит пароль на загрузчик, то тут немного сложнее. Нам потребуется загрузочный диск или USB с live-версией Linux . Здесь я расскажу коротко об общих действиях, если вдруг увижу спрос на данную тему, то обязательно распишу подробнее .

  1. Загружаемся с live-носителя

  2. Монтируем диски сервера

  3. Сброс пароля через chroot или редактирование конфигурации GRUB (самая сложная часть тут)

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

@RaisonCollab
20.01.2025 19:16 UTC
Первоисточник

Комментарии

@aelaa
20.01.2025 14:35 UTC
+16

Вариантов там ооочень далеко не 2:

  • а если шифрование раздела?

  • а если не GRUB?

  • а если не bash?

  • а если...

Статья "чтобы легче гуглить", после которой гуглить придется еще больше.

@RaisonCollab
20.01.2025 14:39 UTC
+1

Вы абсолютно правы, можно найти много "а если", я лишь написал о том, с чем столкнулся сам и какие действия предпринимал ))

@SergeyNovak
20.01.2025 14:43 UTC
+2

Еще стоит открыть для себя live-дистрибутивы, которые можно стартовать от флэшки до дискеты. А вариантов еще миллион. Например, сбить любым способом загрузку со стандартного устройства и тогда, возможно, пойдет загрузка по сети. О таком варианте писал пост:

https://habr.com/ru/companies/ruvds/articles/774482/

@LeshaRB
20.01.2025 15:05 UTC
0

Стоит внести небольшое предисловие, что пароль от учетки забыл не я, а мой товарищ, но я помог ему восстановить доступ

А это для чего?

@agkispu
20.01.2025 15:47 UTC
+3

Ну как же. Классика. Это не для меня, это для друга :)

@randomsimplenumber
20.01.2025 17:26 UTC
+7

Кирпич - это если не грузится. Забыл пароль - совсем другой случай.

@Naves
20.01.2025 17:26 UTC
+1

1) если в опциях загрузки убрать слово ro и вписать rw то не нужно делать лишний remount.

2) перед reboot рекомендуется вводить sync, бывают нюансы дисковых систем.

3) У меня знакомый рассказывал, что на каком-то centos-based (там еще АТС asterisk стояла) такой способ принципиально не работал из-за какого-то аналога etckeeper, который возвращал старые пароли после загрузки.

@Renatk
20.01.2025 18:37 UTC
+1

3. Был включен selinux. В статье не рассмотрели данный момент, как не отключая его правильно сбросить пароль.

@OverDrop
20.01.2025 18:24 UTC
0

А еще проще и правильнее было накатить заново ОС. Потому что никто не знает, что делал знакомый Максима на сервере.

@VT100
20.01.2025 19:48 UTC
+3

На Хабр зарегилась LLM'ка?

@outlingo
21.01.2025 00:24 UTC
+3

Скорей уж SchooLLM’ка

@outlingo
21.01.2025 00:40 UTC
+1

Окирпиченный линукс это когда у вас подписанный зашифрованный загрузочный образ ядра и initrd с паролем на изменение параметров, и расшифровку этих образов загрузчик делает на аппаратном устройстве. Вот это окирпичен. А то что вы описали это одна перезагрузка.

P.S.: в общем то описанная гипотетическая схема кирпича реализована и может быть включена во всех современных железках. Ну разве что без шифрования загрузчика

@CTOMAPBEP
21.01.2025 06:10 UTC
0

магия линукса в том что он просто легально чинится, а винду почти всегда придётся переустанавливать.

@randomsimplenumber
21.01.2025 06:38 UTC
0

Нет никакой магии. Переустановить всегда проще чем починить. К Linux это тоже относится.

@nagibat0r
21.01.2025 14:34 UTC
+3

Читать эту статью - как смотреть, как кто-то гордо заявляет: "Смотрите, я нашёл способ завязывать шнурки!".
Такие открытия, безусловно, спасут мир... однажды.