Перейти к содержимому

Init bin bash что это

  • автор:

Получение доступа к машине

Дождаться появления меню загрузчика и нажать клавишу «e»:

ro quiet splash

заменить на

rw init=/bin/bash

Изменяемая часть подчеркнута на снимке экрана):

root@(none):/#

В этом варианте перезагрузка машины после внесения изменений выполняется командой:

/sbin/reboot -f

В случае, если пароль загрузчика неизвестен

  1. Выполнить загрузку с установочного диска Astra Linux и выбрать «Режим восстановления»;

chroot /target

В этом варианте перезагрузка машины после внесения изменений выполняется двумя командами:

exit
reboot
Не забудьте удалить установочный CD-ROM перед перезагрузкой

Получение имени администратора

Создаваемому при установке ОС администратору присваивается числовой идентификатор 1000. В случае, если имя администратора не известно, его можно получить командой:

getent passwd 1000

Сброс счетчика неудачных попыток

После получения доступа к системе для сброса счетчика неудачных попыток выполнить команду:

    при работе с локальными пользователями:

faillog -u user@domain.ru -r

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

После сброса счетчика перезагрузить машину.

Смена пароля

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

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

После смены пароля перезагрузить ОС.

Сброс блокировки учетной записи администратора

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

  1. Загрузить компьютер в режиме восстановления;
  2. Выполнить команду:

  • Нет меток

Восстановление пароля администратора

Пароль пользователя root по соображениям безопасности нельзя узнать, можно задать ему новый пароль. Для этого:

  1. В меню загрузчика пропишите в параметрах init=/bin/bash
  2. Загрузится консоль. Выполните в ней команды:

mount / -o rw,remount passwd
mount / -o ro,remount reboot

Если загрузчик — grub, следует:

  1. нажать «e» при курсоре на цели загрузки, соответствующей используемому экземпляру ALT Linux;
  2. в открывшемся редакторе отыскать строку, начинающуюся с linux /boot/vmlinuz;
  3. в её конец дописать то самое init=/bin/bash
  4. нажать F10

Внимание! Строка загрузки ядра обычно весьма длинная и в GRUB может быть разбита на несколько экранных, продолжающихся «\» в конце каждой такой экранной строки; дописывать следует или в конец полной командной строки, не завершающийся обратной косой чертой, или между аргументами вроде «ro quiet» через пробел, но не между словами «linux» и «/boot/vmlinuz»!

Внимание! При редактировании не следует нажимать Ctrl-c/F2 для получения командной строки, вы и так исправляете уже существующую команду; пользуйтесь курсорными стрелками (Del и Backspace не должны понадобиться).

С дополнительными ухищрениями при загрузке Вашей системы

Не всегда после минимальной загрузки системы, как в первом предложенном способе, Вы получите полностью рабочую систему, которой Вы смогли бы командовать. А именно, она на этом этапе может ещё не работать с нужными устройствами — с клавиатурой. (Такое наблюдалось, например, на ALT Desktop 4.0 с USB-клавиатурой.)

Тогда путь можно немного усложнить: в качестве параметра init передать ядру не командную оболочку, а специально написанный скрипт, который сначала выполнит обычные действия по подготовке устройств к использованию в системе, а потом уже запустит командную оболочку. Скрипт этот нужно расположить в корневом разделе, который только и доступен на этом этапе загрузки.

Подробности: Для наших целей хорошо, если у Вас /var/tmp/ располагается на корневом разделе (проверьте по выводу команды mount или df /var/tmp/ ) и у Вас есть права записи в него. Пусть наш скрипт будет расположен по пути /var/tmp/myinit . Создайте его нормальным текстовым редактором (например, в меню системы, где такое приходилось делать, нашёлся gedit) с таким содержанием:

#!/bin/sh echo Running myinit. /etc/rc.d/rc.sysinit /bin/sh
#!/bin/sh set -x echo Running myinit. /etc/rc.d/rc.sysinit /bin/sh

чтобы «объявлялись» выполняемые шаги Вашего скрипта и Вы лучше могли бы следить за процессом; см. man set ), сохраните Ваш скрипт, сделайте исполняемым ( chmod a+x /var/tmp/myinit ), и перезагружайтесь с параметром init=/var/tmp/myinit .

Если не нашлось места, куда бы Вы могли поместить свой init-скрипт, так чтобы он был доступен на этом раннем этапе загрузки, то нужно будет придумать какую-нибудь ещё хитрость. Возможно, можно сделать свою initial RAM fs на любом разделе и загрузиться с ней (если у Вас загрузчик — grub). Но это уже чрезмерно для обычного человека: каждый Unix-пользователь должен представлять себе, как писать shell-скрипт (что мы и сделали) — это ему будет полезно при пользовании, но вряд ли обязан уметь изготавливать свои initramfs и т.п. — больше это ему при использовании системы никогда не пригодится. Поэтому разумнее, наверное, перейти к следующему описанному способу, более универсальному и полезному в других случаях, но требующему дополнительных средств.

Более универсальный способ

Можно загрузить «другую» систему и через неё всё сделать; для этого нужны дополнительные средства, помимо Вашей установленной системы, например, загрузочный спасательный или установочный диск, или LiveCD, или что-то подобное.

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

48. Восстановление доступа

При работе вы можете сталкиваться с ситуациями, когда вам нужно восстановить доступ к системе. К примеру, потерялся пароль или предыдущий админ его не предоставил. Прежде чем начнём, небольшой совет — используйте парольные менеджеры, например, keepassxc. У вас может быть множество серверов, различные аккаунты на сайтах и везде требуется пароль. Придумать для различных ресурсов разные пароли и потом всё это запомнить — нереально. Использовать один и тот же пароль, каким бы сложным он не был — тоже не правильно — всегда есть риск утечки. А с парольным менеджером вы можете сгенерировать рандомные пароли для различных ресурсов и не беспокоиться, что кто-то где-то украдёт пароль и получит доступ ко всем системам. Но саму базу паролей надо бэкапить, иначе можете остаться без единого пароля.

Сейчас мы займёмся сбросом пароля root пользователя. В рабочей системе без прав суперпользователя это сделать невозможно, если не принимать во внимание всякие уязвимости. Поэтому пароль надо сбрасывать ещё до того, как система запустилась. Чтобы понять, как это сделать, вспомним процесс запуска операционной системы. Мы знаем, что пароли хранятся в файле /etc/shadow. Корень у нас монтируется ещё на этапе с временным корнем — initramfs — откуда берутся необходимые для монтирования модули. Дальше у нас запускается система инициализации. Надо вклиниться в промежуток после монтирования корня и до запуска системы инициализации. Это можно сделать несколькими способами — я сначала покажу самый простой и быстрый на мой взгляд, ну и потом разберу самый популярный в интернете.

И так, чтобы изменить процесс запуска, надо изменить настройки загрузчика grub. Для этого при запуске системы в меню grub на первом пункте нажимаем e — edit.

Спустимся на строчку с параметрами ядра linux. Здесь есть параметр ro — read only. Во время запуска основной корень предварительно монтируется в режиме чтения.

Заменим ro на rw — нам нужно, чтобы корень был доступен для изменений, всё таки мы собираемся изменить файл /etc/shadow. Также добавляем опцию init=/bin/bash — таким образом мы вместо системы инициализации запускаем bash, тем самым предотвращаем нормальный запуск системы и сразу получаем доступ к оболочке на незапущенной системе. Наши изменения в grub сохраняются только на текущую сессию и после перезагрузки всё сбросится, так что тут ничего страшного нет. Чтобы запуститься с новыми параметрами, нажимаем ctrl+x.

После этого нас встретит bash. Для начала я покажу все команды, чтобы было легче запомнить, а потом разберём, что и зачем. Пишем:

su - load_policy -i /etc/selinux/targeted/policy/policy.31 

В зависимости от обновления название последнего файла может отличаться — просто в директории policy нажимаете tab и баш дополняет нужный файл, он там обычно единственный. После этого пишем:

passwd 

и вводим новый пароль дважды. Затем через виртуалбокс перезагружаем виртуалку.

su - load_policy -i /etc/selinux/targeted/policy/policy.31 passwd 

После запуска операционной системы проверим новый пароль:

Теперь разберёмся с командами. Первое что мы ввели:

Это нужно, чтобы прогрузилось окружение пользователя. Если проверим bash, который у нас загружается в начале:

echo $PATH

в нём только две директории в переменной PATH — /usr/local/bin и /usr/bin . Если мы напишем просто:

окружение останется, а значит в этой переменной останутся те же директории:

echo $PATH

Из темы про su мы помним, что для загрузки окружения пользователя к su надо добавлять дефис:

После чего в переменной $PATH:

echo $PATH

мы увидим новые директории.

Шаг с load_policy нужен на системах, где стоит selinux. Т.е. на RHEL и Centos-е это нужно, а на том же Debian или Ubuntu — нет, если конечно вы не поставили на них selinux. Зачем этот шаг вообще нужен? При запуске системы у нас не прогрузился selinux:

getenforce 

Как видите, selinux disabled . Когда selinux выключен, работать с файлами не стоит, иначе контекст сбрасывается. Смена пароля — изменение файла /etc/shadow. Посмотрим контекст этого файла:

ls -lZ /etc/shadow 

Сейчас контекст shadow_t . Для наглядности пропустим шаг с load_policy и сразу зададим пароль — passwd. После этого контекст файла пропадёт:

ls -lZ /etc/shadow 

Мы говорили, что selinux блокирует процессам доступ к файлам, если контекст не совпадает. И в итоге из-за потерянного контекста при запуске система не сможет обратиться к /etc/shadow и поэтому не запустится.

Но тут ничего ужасного нет и мы можем исправить. Мы помним, что для восстановления контекста из конфига selinux есть утилита restorecon:

restorecon -v /etc/shadow ls -lZ /etc/shadow 

Но, как видите, ничего не произошло — потому что у нас selinux не запущен. И вот тут нам нужна команда load_policy — она загружает политики:

load_policy -i /etc/selinux/targeted/policy/policy.31 

И вот после неё restorecon всё возвращает:

restorecon -v /etc/shadow ls -lZ /etc/shadow 

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

Теперь попробуем разобрать популярные способы из интернета. Где-то что-то отличается по мелочам, поэтому я покажу что-то среднее. Так или иначе, везде нужно редактировать в grub-е строчку linux. Многие вместо вышеуказанных изменений пишут rd.break — тогда у нас процесс запуска останавливается ещё на initramfs.

В принципе, это полезная опция, которая позволяет решить некоторые проблемы, если не грузится корень. В initramfs обычно утилит мало:

ls /bin /sbin 

но их может хватить на базовые операции для решения проблем, скажем, для проверки и исправления проблем с файловой системой, lvm и т.п.

Настоящий же корень примонтирован в директорию /sysroot:

mount | grep /sysroot 

И, обратите внимание, что он примонтирован в режиме ro — read only. Поэтому мы изначально в grub меняли ro на rw. Тут же придётся перемонтировать:

mount -o remount,rw /sysroot 

Дальше нам необходимо перейти с временного корня на настоящий, для этого есть утилита chroot:

chroot /sysroot 

После чего надо залогиниться и задать новый пароль:

su - passwd 

И мы помним, что это действие сбрасывает контекст с файла /etc/shadow. И для решения этой проблемы советуют создать файл в корне:

touch /.autorelabel 

и перезагрузиться. При виде такого файла при запуске selinux восстанавливает контекст всех файлов. Но это долгий процесс и зависит от количества файлов в системе.

Правда у меня после создания файла контекст не восстановился и система отказывалась запускаться. Но если перезагрузиться и добавить в grub параметр autorelabel=1 — контекст восстановится. Потом понадобится ещё одна перезагрузка и всё заново заработает.

Ещё вас может заинтересовать вопрос — значит, любой желающий, не зная пароль, может его сбросить? Насколько это безопасно? Тут два варианта. Если у человека есть доступ только к консоли виртуалки, то можно поставить пароль на grub — тогда в меню grub при попытке редактирования будет запрашиваться пароль. Но если у человека есть физический доступ к компьютеру, то единственный способ защититься — это шифровать диски, иначе злоумышленник просто загрузится в livecd. Можно конечно блокировать паролем загрузочное меню компьютера, но и это можно обойти просто вытащив диск и подключив к другому компьютеру.

Подведём итоги. Сегодня мы с вами разобрали, как восстановить доступ к системе, если вы не знаете пароль root-а или другого пользователя с правами sudo. Также мы научились останавливать процесс запуска ещё на этапе initramfs — а это очень важно для решения проблем.

© Copyright 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия 5f665cc2 .

Как сбросить root-пароль Linux-сервера

Заметки айтишника

Если вы забыли root-пароль от Linux-сервера в облаке и sudo прав на машину у других пользователей нет, то воспользуйтесь моей инструкцией, чтобы сбросить root-пароль под различные ОС.

Centos 7 x86_64 + Centos 7 x86_64 Webuzo

1. Нажмите на кнопку Send Ctrl+Alt+Del в консоли — это перезагрузит сервер. Во время загрузки нужно «поймать» меню загрузчика. нашем образе CentOS 7 используется Grub.

2. Как только вы увидите на экране такую картинку, нажмите пробел или кнопку вниз — это прервет отсчет времени:

3. Grub некоторое время «думает» на этом меню загрузки. Поэтому надо дать ему понять, что не нужно автоматически продолжать загрузку с опциями по умолчанию, и что мы хотим работать с его меню.

4. Стрелками выбираем нужное ядро, которое отображено на скриншоте, и вводим «e» латиницей.

5. Теперь мы можем редактировать опции загрузки ядра:

6. Стрелками переходим к началу строки, которая начинается с «linux16». Это указание пути к файлу ядра, которое нужно загрузить, а также опции загрузки. Нам нужно переписать эти опции, чтобы попасть в ОС без root-пароля.

  • Меняем ro на rw
  • Меняем первое значение console=tty0 на console=tty
  • Удаляем 2 значения: console=ttyS0,115200n8 и console=ttyS0,115200
  • В конце добавляем init=/bin/bash

Было:

Стало:

7. После изменения нажимаем комбинацию клавиш CTRL+X, что перезагружает ядро с новыми опциями.

8. Если мы все сделали корректно, увидим следующее:

9. Мы попали на сервер от root без пароля и можем сбросить сам пароль.

Для начала проверяем, можно ли внести изменения в файловую систему. Для этого в консоли вводим:

mount | grep vda

Если все сделали правильно, увидим такой экран:

На экране мы должны видеть опцию rw, которую мы задавали в настройках — не ro.
Если видим ro, нужно перемонтировать файловую систему в rw:

mount -o remount, rw /

После монтирования нужно снова перепроверить, что опция указана как rw, при помощи команды из предыдущего пункта.

10. Сбрасываем пароль командой:

passwd

Важно! Новый пароль не отображается даже звездочками. Поэтому нужно вводить его вслепую дважды.
Еще важнее! Если вы не выключали Selinux, вам также понадобится заставить его перечитать контексты. Для этого надо создать файл /.autorelabel, который даст Selinux понять, что нужно перечитать контекст. Без этого мы не сможем залогиниться с новым паролем:

touch /.autorelabel

11. После этого, на всякий случай, выполняем команду sync, чтобы все изменения из оперативной памяти записались на диск:

sync

12. Чтобы изменения применились, перезагрузите сервер.
Команды reboot и shutdown -r и кнопка «Send Ctrl+Alt+Del» не подойдут. Они рассчитывают на init-демона, который мы подменили процессом /bin/bash.
Поэтому нужно сделать hard reboot сервера (Холодная перезагрузка) из контрольной панели, или запустить init-демона вручную. Это можно сделать, выполнив команду:

exec /sbin/init

13. После перезагрузки можем зайти на сервер от имени root с новым паролем.

Fedora 28

1. Нажмите на кнопку «Send Ctrl+Alt+Del» в консоли — это перезагрузит сервер. В процессе загрузки нужно «поймать» меню загрузчика. В нашем образе Fedora используется Grub.
Как только вы увидите на экране такую картинку, нажмите пробел или кнопку вниз — это прервет отсчет времени:

2. Grub некоторое время «думает» на этом меню загрузки. Поэтому надо дать ему понять, что не нужно автоматически продолжать загрузку с опциями по умолчанию, и что мы хотим работать с его меню. Для этого вводим «e» латиницей.

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

3. Стрелками переходим к началу строки, что начинается с «linux16». Это указание пути к файлу ядра, которое нужно загрузить, а также опции загрузки. Нам нужно переписать эти опции, чтобы попасть в ОС без root-пароля.

  • Меняем ro на rw
  • Меняем первое значение console=tty1 на console=tty
  • Удаляем значение console=ttyS0,115200n8
  • В конце добавляем rd.break enforcing=0

Было:

Стало:

4. После изменений нажимаем комбинацию клавиш CTRL+X. Это перезагружает сервер с новыми опциями.
Если все сделали правильно, видим следующее:

5. Мы зашли в «emergency recovery» консоли.
Сначала проверяем, можем ли вносить изменения в файловую систему. Для этого в консоли вводим:

mount | grep vda

Если все сделали правильно, увидим следующее:

Нас интересует опция rw, которую мы задавали в настройках. Должна быть указана она — не ro.
Если видим ro — нужно перемонтировать файловую систему в rw:

mount -o remount, rw /

6. После монтирования снова проверьте, что опция при проверке указана как rw, при помощи команды из предыдущего пункта.

7. Сбрасываем пароль:

chroot /sysroot
passwd

Важно! Новый пароль не отображается даже звездочками. Поэтому надо вводить его вслепую дважды.

8. После этого, на всякий случай, выполняем команду sync — чтобы все изменения из оперативной памяти записались на диск:

sync

2 раза вводим команду:

exit

9. После этого пойдет нормальная загрузка ОС. Дожидаемся окончания загрузки и входим с новым паролем.

10. Теперь нужно поправить Selinux после нашего вмешательства. Отдаем команды от root:

restorecon -v /etc/shadow setenforce 1

Файл /etc/shadow перечитывается для Selinux и включается режим обратно в Enforcing.

openSUSE Leap 42

Если вы настраивали пароль на Grub-загрузчик и не помните его тоже этот способ вам не подойдет. Вам нужно будет загрузить сервер с другого источника — например, с OpenSuse Install DVD образа.

1. Нажмите на кнопку «Send Ctrl+Alt+Del» в консоли — это перезагрузит сервер. В процессе загрузки нужно «поймать» меню загрузчика. В нашем образе openSUSE используется Grub.

Как только вы увидите на экране такую картинку, нажмите пробел или кнопку вниз — это прервет отсчет времени:

2. Grub некоторое время «думает» на этом меню загрузки. Поэтому надо дать ему понять, что не нужно автоматически продолжать загрузку с опциями по умолчанию, и что мы хотим работать с его меню. Для этого вводим «e» латиницей.

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

Чтобы восстановить пароль, мы можем использовать как single-user mode, так и трюк с init=/bin/bash. Поскольку возможно, что у вас single-user mode настроен так, чтобы все равно запрашивать root-пароль, мы сразу опишем способ с запуском bash как init процессом.

Наши образы openSUSE используют Grub как загрузчик. Если вы использовали свой образ openSUSE, ваш загрузчик может оказаться не Grub, а LiLo. В таком случае, синтакс будет отличаться.

3. Стрелками переходим к началу строки, что начинается с «linux». Это указание пути к файлу ядра, которое нужно загрузить, а также опции загрузки. Нам нужно переписать эти опции, чтобы попасть в ОС без root-пароля.
Делаем следующее:

  • Удаляем значение: console=ttyS0,115200n8
  • Меняем значение console=tty0 на console=tty
  • В конце добавляем init=/bin/bash

Было:

Стало:

4. После изменения нажимаем комбинацию клавиш CTRL+X, что выполняет перезагрузку с новыми опциями.

5. Если все было выполнено корректно, видим такую картину:

Мы попали на сервер от root без пароля и можем выполнить сброс самого пароля.

6. Для начала выполняем монтирование файловой системы для возможности внесения изменений, в консоли вводим:

mount -o remount, rw /

Проверяем корректность изменений:

mount | grep vda

Если все было выполнено правильно, мы увидим следующее:

Нас интересует опция rw, должна быть указана именно она, а не ro.

7. Сбрасываем пароль командой:

Passwd

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

8. После этого, на всякий случай, выполняем команду sync, чтобы все изменения из оперативной памяти записались на диск:

sync

9. Далее нужно выполнить перезагрузку сервера для применения изменений.
Команды reboot и shutdown -r и кнопка «Send Ctrl+Alt+Del» не подойдут. Они рассчитывают на init-демона, который мы подменили процессом /bin/bash.
Поэтому нужно сделать hard reboot сервера (Холодная перезагрузка) из контрольной панели, или запустить init-демона вручную. Это можно сделать, выполнив команду:

exec /sbin/init

13. После перезагрузки можем зайти на сервер от имени root с новым паролем.

Ubuntu 14.04

1. Нажмите на кнопку «Send Ctrl+Alt+Del» — это перезагрузит сервер. Сразу выделяем область консоли мышью. В процессе загрузки требуется успеть «поймать» меню загрузчика В нашем образе Ubuntu используется Grub.

2. В Canonical меню Grub обычно не видно. Чтобы его вызвать, надо зажать клавишу Shift (только левый) в процессе загрузки, как только мелькает надпись Booting from hard disk.

Если с первого раза не получится, пробуйте еще раз.

В результате вы должны получить следующую картинку:

3. На первом пункте Ubuntu нажимаем e латиницей и видим следующее:

4. Стрелками переходим к началу строки, которая начинается с «linux». Это указание пути к файлу ядра, которое нужно загрузить, а также опции загрузки. Нам нужно переписать эти опции, чтобы попасть в ОС без root-пароля.
Делаем следующее:

Было:

Стало:

5. После изменения нажимаем комбинацию клавиш CTRL+X, что выполняет перезагрузку с новыми опциями.

Если все сделали правильно, видим следующее:

Мы попали на сервер от root и можем сбросить пароль.

6. Выполняем проверку возможности внесения изменений в файловую систему:

mount | grep vda

Если все сделали правильно, видим следующее:

Нас интересует опция rw, которую мы задавали в настройках. Должна быть указана она — не ro.

7. Если видим ro — нужно перемонтировать файловую систему в rw:

mount -o remount, rw /

8. После монтирования снова проверьте, что опция при проверке указана как rw, при помощи команды из предыдущего пункта.

9. Сбрасываем пароль командой:

Passwd

Важно! Новый пароль не отображается даже звездочками. Поэтому нужно вводить его вслепую дважды.

Еще важнее! Если вы не выключали Selinux, вам также понадобится заставить его перечитать контексты. Для этого надо создать файл /.autorelabel, который даст Selinux понять, что нужно перечитать контекст. Без этого мы не сможем залогиниться с новым паролем:

touch /.autorelabel

10. После этого, на всякий случай, выполняем команду sync, чтобы все изменения из оперативной памяти записались на диск:

sync

11. Чтобы изменения применились, перезагрузите сервер.

Команды reboot и shutdown -r и кнопка «Send Ctrl+Alt+Del» не подойдут. Они рассчитывают на init-демона, который мы подменили процессом /bin/bash.
Поэтому нужно сделать hard reboot сервера (Холодная перезагрузка) из контрольной панели, или запустить init-демона вручную. Это можно сделать, выполнив команду:

exec /sbin/init

13. После перезагрузки можем зайти на сервер от имени root с новым паролем.

Ubuntu 16.04

1. Нажмите на кнопку «Send Ctrl+Alt+Del» — это перезагрузит сервер. Сразу выделяем область консоли мышью. В процессе загрузки требуется успеть «поймать» меню загрузчика В нашем образе Ubuntu используется Grub.

2. В Canonical меню Grub обычно не видно. Чтобы его вызвать, надо зажать клавишу Shift (только левый) в процессе загрузки, как только мелькает надпись Booting from hard disk.
Если с первого раза не получится, пробуйте еще раз.
В результате вы должны получить следующую картинку:

3. Стрелками выбираем «Advanced options for Ubuntu» и нажимаем Enter, видим следующее:

4. Выбираем пункт с (recovery mode) и нажимаем Enter.

5. Выбираем пункт «root Drop to root shell prompt» и нажимаем Enter:

7. В наших шаблонах ОС Ubuntu не нужно вводить дополнительный пароль. Мы попадаем на сервер от root без него.

8. Для начала выполняем проверку возможности внесения изменений в файловую систему, в консоли вводим:

mount | grep vda

Нас интересует опция rw, которую мы задавали в настройках. Должна быть указана она — не ro.

9. Если видим ro — нужно перемонтировать файловую систему в rw:

mount -o remount, rw /

10. После монтирования снова проверьте, что опция при проверке указана как rw, при помощи команды из предыдущего пункта.

11. Сбрасываем пароль командой:

Passwd

Важно! Новый пароль не отображается даже звездочками. Поэтому нужно вводить его вслепую дважды.

12. После этого, на всякий случай, выполняем команду sync, чтобы все изменения из оперативной памяти записались на диск:

sync

13. Чтобы изменения применились, перезагрузите сервер.
Команды reboot и shutdown -r и кнопка «Send Ctrl+Alt+Del» не подойдут. Они рассчитывают на init-демона, который мы подменили процессом /bin/bash.
Поэтому нужно сделать hard reboot сервера (Холодная перезагрузка) из контрольной панели, или запустить init-демона вручную. Это можно сделать, выполнив команду:

exec /sbin/init

14. После перезагрузки можем зайти на сервер от имени root с новым паролем.

Debian 8 + Debian 9

1. Нажмите на кнопку «Send Ctrl+Alt+Del» — это перезагрузит сервер. Сразу выделяем область консоли мышью. В процессе загрузки требуется успеть «поймать» меню загрузчика В наших образах Debian используется Grub.

2. В Canonical меню Grub обычно не видно. Чтобы его вызвать, надо зажать клавишу Shift (только левый) в процессе загрузки, как только мелькает надпись Booting from hard disk.

Если с первого раза не получится, пробуйте еще раз.

В результате вы должны получить следующую картинку:

3. В отличие от Ubuntu, root-пользователь в Debian образе закрыт (на пароле). Потому мы не сможем воспользоваться штатным Rescue вариантом загрузки.
Нужно поправить опции загрузки.

4. Выбираем пункт Debian GNU/Linux и нажимаем e латиницей.

5. Попадем в конфигурацию выбранного пункта меню:

6. Стрелками переходим к началу строки, которая начинается с «linux». Это указание пути к файлу ядра, которое нужно загрузить, а также опции загрузки. Нам нужно переписать эти опции, чтобы попасть в ОС без root-пароля.
Делаем следующее:

  • Меняем ro на rw
  • Меняем первое значение console=tt0 на console=tty
  • Удаляем 2 значения: console=ttyS0,115200 и earlyprintk=ttyS0,115200
  • в конце добавляем init=/bin/bash

Было:

Стало:

7. После изменения нажимаем комбинацию клавиш CTRL+X, видим меню и нажимаем Enter.

8. Мы попали на сервер от root и можем сбросить пароль.
Выполняем проверку возможности внесения изменений в файловую систему:

mount | grep vda

Если все сделали правильно, видим следующее:

Нас интересует опция rw, которую мы задавали в настройках. Должна быть указана она — не ro.

9. Если видим ro — нужно перемонтировать файловую систему в rw:

mount -o remount, rw /

10. После монтирования снова проверьте, что опция при проверке указана как rw, при помощи команды из предыдущего пункта.

11. Сбрасываем пароль командой:

Passwd

Важно! Новый пароль не отображается даже звездочками. Поэтому нужно вводить его вслепую дважды.

12. После этого, на всякий случай, выполняем команду sync, чтобы все изменения из оперативной памяти записались на диск:

sync

13. Чтобы изменения применились, перезагрузите сервер.
Команды reboot и shutdown -r и кнопка «Send Ctrl+Alt+Del» не подойдут. Они рассчитывают на init-демона, который мы подменили процессом /bin/bash.
Поэтому нужно сделать hard reboot сервера (Холодная перезагрузка) из контрольной панели, или запустить init-демона вручную. Это можно сделать, выполнив команду:

exec /sbin/init

14. После перезагрузки можем зайти на сервер от имени root с новым паролем.

  • ← Восстанавливаем WAN порт роутера на примере D-Link DIR-300NRUb5
  • Telegram бот на PHP →

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *