Я зробив ту саму помилку, додавши свій обліковий запис до групи (забув -a
). У мене система була встановлена з ввімкненим корінним входом, і мій обліковий запис був єдиним на комп'ютері.
Прийнята відповідь мені не допомогла. Під час завантаження в режим відновлення все, що я отримав, - це недобре повідомлення
Неможливо відкрити доступ до консолі, кореневий обліковий запис заблоковано. Детальнішу інформацію див. У головній сторінці «sulogin (8)».
Щоб продовжити, натисніть ENTER
Після натискання клавіші ENTER система завантажилася нормально: не пощастило отримати доступ до кореня, щоб усунути проблему. Я залишаю цю відповідь, якщо до цього моменту хтось опиниться в моїх черевиках. Використовуйте наступне, лише якщо ви не можете перейти в режим відновлення через меню 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
що ви повернули своє членство в судо. Якщо ви отримаєте помилку "Команда не знайдена", використовуйте /sbin/usermod
та /bin/id
.
У цей момент ви не можете вимкнути чи перезавантажити систему. reboot
, halt
або poweroff
не працюватиме, і exit
з оболонки призведе до паніки ядра, оскільки не очікується, що процес PID 1 просто завершиться. Отже, наступні дві команди, які ви повинні видати, це:
sync
exec /sbin/init
sync
на всякий випадок, коли щось піде не так, щоб зберегти всі зміни на диску та exec
замінити оболонку на справжню init
(яка може бути систематизована, upstart або System V init, але це завжди називається /sbin/init
). Система, швидше за все, продовжить завантажуватися нормально (немає режиму відновлення).
- Увійдіть і перезавантажте систему один раз, наприклад, -
sudo reboot
ви повинні повернути собі привілей sudo. Рекомендується перезавантаження, оскільки (хоча це дуже рідко) init
можуть бути передані додаткові параметри під час звичайного завантаження, а цього ми не робили. У разі exec
невдачі, просто перезавантажте машину і дайте їй нормально завантажитися. Усі сучасні файлові системи журналів, такі як ext4, xfs та btrfs, швидко відновлюються (максимум кілька секунд для перевірки журналу, якщо він sync
редагується перед скиданням), і все буде налаштовано.
Трохи тла
Була дискусія у звіті про помилки Debian про цю саму проблему, і, наскільки я розумію, це було вирішено особливістю, а не помилкою, що, на мою думку, було скоріше помилкою. Займаючись цим бізнесом протягом 25 років, я не можу не погодитися з аргументом Майкла Бібля в повідомленні №31 у цій темі:
Врахуйте це: у вас ноутбук із заблокованим кореневим обліковим записом. За замовчуванням завантажувач grub-завантажувача створює завантажувальний запис для режиму порятунку. Тож, навіть якщо ви заблокуєте біосистему, щоб не дозволяти завантажувати з CD-Rom чи USB, а ви захищаєте паролем grub, хтось може легко отримати кореневий доступ, якщо залишити ноутбук на мить без нагляду.
Правильне, IMO, якщо не загальне, заперечення було висловлене у повідомленні № 70 Феліпе Сателером:
Для багатьох (більшості?) Комп'ютерів фізичний доступ означає, що гра втрачає безпеку, оскільки ви можете просто розібрати коробку та отримати жорсткий диск.
Це стосується особливо ноутбука, згаданого в аргументі Майкла: якщо ви залишите його на мить без нагляду, а хтось піде за вашими даними, ноутбук буде просто відпадений, щоб його більше ніколи не побачили. І для будь-якої машини, не «багатьох» чи «більшості», навіть тих, хто набрав 8 балів у стійку, як тільки зловмисник отримає фізичний доступ до машини, гра справді закінчена.