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

Как сбросить 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-пароля.
Делаем следующее:

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

Было:

Стало:

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 с новым паролем.