Я сделал ту же ошибку, добавив свой аккаунт в группу (забыл -a
). У меня была установлена система с заблокированной учетной записью root, и моя учетная запись была единственной на компьютере.
Принятый ответ мне не помог. При загрузке в режиме восстановления все, что я получил, было бесполезным сообщением
Не удается открыть доступ к консоли, root-аккаунт заблокирован. См. Man-страницу sulogin (8) для более подробной информации.
Нажмите ENTER для продолжения.
После нажатия клавиши ENTER система загрузилась нормально: не повезло, получив root-доступ для решения проблемы. Я оставляю этот ответ на случай, если к этому моменту кто-то окажется на моем месте. Используйте следующее, только если вы не можете перейти в режим восстановления через меню Grub .
Прохождение для получения корневой оболочки:
- Загрузитесь в меню Grub и выделите (но не нажимайте Enter!) Нормальную (по умолчанию, не восстановление!) Опцию загрузки.
- Нажмите
e
. Grub отобразит редактор командной строки с несколькими строками, каждая из которых может показаться незнакомой, если не пугающей. Не волнуйтесь, все сделанные вами изменения не сохраняются навсегда.
- Найдите строку, которая читает
linux ... ro ...
. Это командная строка ядра. Заменить ro
токен rw
, чтобы сделать корневую файловую систему чтения / запись, и добавить еще один параметр командной строки ядра, init=/bin/sh
. Это указывает ядру на выполнение sh
вместо /sbin/init
. В конце строка должна выглядеть так linux ... rw init=/bin/sh ...
. Примечание: вы можете обойтись даже с голой grub>
подсказкой. Я буду рад объяснить, как шаг за шагом, если все остальное не сработает для вас; просто оставьте комментарий к этому ответу.
- После изменения нажмите, F10чтобы использовать команды из редактора для загрузки системы (или прочитайте инструкции по загрузке прямо под окном редактора, если ваш Grub скомпилирован по-другому). Вы получите приглашение корневой оболочки, так как процесс init запускается как PID 1 с идентификатором root.
- Сделайте изменения, которые вы хотите сделать, например
usermod -a -Gadm,sudo YOURUSERID
. Подтвердите, id -a YOURUSERID
что вы получили членство в sudo. Если вы получили ошибку «команда не найдена», используйте /sbin/usermod
и /bin/id
.
Вы не можете выключить или перезагрузить систему в этот момент. reboot
, halt
или poweroff
не будет работать, и exit
из оболочки приведет к панике ядра, так как процесс PID 1 не ожидается просто выйти. Итак, следующие две команды, которые вы должны выполнить:
sync
exec /sbin/init
sync
на всякий случай, если что-то пойдет не так, чтобы сохранить все изменения на диске и exec
заменить оболочку реальной init
(которая может быть systemd, upstart или System V init, но она всегда вызывается /sbin/init
). Скорее всего, система продолжит загрузку в обычном режиме (без режима восстановления).
- Войдите в систему и перезагрузите систему один раз, например -
sudo reboot
вы должны были получить обратно привилегию sudo. Рекомендуется перезагрузка, поскольку (хотя и очень редко) init
могут передаваться дополнительные параметры при обычной загрузке, а мы этого не делали. В случае exec
сбоя просто перезагрузите компьютер и дайте ему нормально загрузиться. Все современные файловые системы журналирования, такие как ext4, xfs и btrfs, быстро восстанавливаются (максимум несколько секунд для проверки журнала, если sync
редактируется до сброса), и все будет готово.
Немного фона
В отчете об ошибках Debian обсуждалась именно эта проблема, и, насколько я понимаю, это была определенная функция, а не ошибка, которую я считаю скорее ошибкой. Пробыв в этом бизнесе 25 лет, я не могу не согласиться с доводом Майкла Библа в сообщении № 31 в этой теме:
Учтите это: у вас есть ноутбук с заблокированной учетной записью root. По умолчанию загрузчик grub создает загрузочную запись для режима восстановления. Таким образом, даже если вы заблокируете биос, чтобы запретить загрузку с CD-Rom или USB, и вы защищаете паролем grub, кто-то может легко получить root-доступ, если вы на мгновение оставите ноутбук без присмотра.
Правильное ИМО, если не достаточно общее, возражение было дано в сообщении № 70 Фелипе Сателером:
Для многих (большинства?) Компьютеров физический доступ означает потерю игры в плане безопасности, так как вы можете просто разобрать коробку и получить жесткий диск.
Это особенно верно для ноутбука, упомянутого в аргументе Майкла: если вы оставите его без присмотра на мгновение, а кто-то ищет ваши данные, ноутбук просто исчезнет, и его больше никогда не увидят. И для любой машины, а не для «многих» или «большинства», даже для тех, кто врезается в стойку с 8 точками, как только злоумышленник получает физический доступ к машине, игра действительно заканчивается.