Восстановление пароля администратора: различия между версиями
Asy (обсуждение | вклад) (→Более универсальный способ: -> С использованием другой ОС Linux) |
Asy (обсуждение | вклад) |
||
Строка 62: | Строка 62: | ||
Сборка дерева ФС для chroot подробно описана в статье [[Восстановление загрузочной записи]]. | Сборка дерева ФС для chroot подробно описана в статье [[Восстановление загрузочной записи]]. | ||
== С использованием другой ОС == | |||
Можно воспользоваться любой ОС, которая позволяет писать в раздел с той файловой системой, на которой у Вас расположен корневой раздел. В ALT используется система хранения хэшей tcb, достаточно отредактировать файл /etc/tcb/root/shadow, убрав символы между первым и вторым двоеточиями. Пароль root станет пустым. В ряде других дистрибутивов можно аналогичным образом исправлять /etc/shadow. Форматы shadow различаются только тем, что в последнем случае файл содержит хэши паролей всех пользователей, а не одного, как в ALT. | |||
{{Category navigation|title=Восстановление|category=Rescue|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Восстановление|category=Rescue|sortkey={{SUBPAGENAME}}}} |
Версия от 20:52, 31 марта 2019
Малыми средствами
Пароль пользователя root по соображениям безопасности нельзя узнать, можно задать ему новый пароль. Для этого:
- В меню загрузчика пропишите в параметрах init=/bin/bash
- Если загрузчик -- grub, следует:
- нажать "e" при курсоре на цели загрузки, соответствующей используемому экземпляру ALT Linux;
- в открывшемся редакторе отыскать строку, начинающуюся с linux /boot/vmlinuz;
- в её конец дописать то самое init=/bin/bash
- нажать F10
- Загрузится консоль. Выполните в ней команду mount / -o rw,remount
- Если файловая система /usr создана отдельно, найдите (cat /etc/fstab) и примонтируйте /usr mount <устройство> /usr
- Запустите passwd (можно пропустить предыдущий пункт и вернуться к нему в случае, если команда не будет найдена) passwd
- Укажите пароль для пользователя root и подтвердите его.
- Далее выполните команды (достаточно любой из, но обе лучше): sync reboot
С дополнительными ухищрениями при загрузке Вашей системы
Не всегда после минимальной загрузки системы, как в первом предложенном способе, Вы получите полностью рабочую систему, которой Вы смогли бы командовать. А именно, она на этом этапе может ещё не работать с нужными устройствами -- с клавиатурой. (Такое наблюдалось, например, на 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 и т.п. -- больше это ему при использовании системы никогда не пригодится. Поэтому разумнее, наверное, перейти к следующему описанному способу, более универсальному и полезному в других случаях, но требующему дополнительных средств.
С использованием другой ОС Linux
Суть метода - загрузив другую ОС Linux собрать дерево файловых систем и сделать в него chroot, после чего появляется возможность выполнять в целевой системе различные команды с правами суперпользователя. Для этого можно воспользоваться практически любым дистрибутивом любого производителя. Существуют и специализированные дистрибутивы для восстановления, например Rescue. Ограничение одно: архитектура используемого для восстановления дистрибутива должна позволить запускать приложения Вашей ОС после перехода в chroot.
Этот путь полезен не только для смены пароля, но и в других необычных случаях.
Сборка дерева ФС для chroot подробно описана в статье Восстановление загрузочной записи.
С использованием другой ОС
Можно воспользоваться любой ОС, которая позволяет писать в раздел с той файловой системой, на которой у Вас расположен корневой раздел. В ALT используется система хранения хэшей tcb, достаточно отредактировать файл /etc/tcb/root/shadow, убрав символы между первым и вторым двоеточиями. Пароль root станет пустым. В ряде других дистрибутивов можно аналогичным образом исправлять /etc/shadow. Форматы shadow различаются только тем, что в последнем случае файл содержит хэши паролей всех пользователей, а не одного, как в ALT.