Як додати себе назад як користувача sudo?


64

Сьогодні я очистив встановлений Ubuntu 11.10, а потім встановив VirtualBox. Це вимагало, щоб я додав себе до групи vboxusers, і оскільки 11.10, здається, більше не має графічного додатка для додавання користувачів до групи, я запустив таку команду:

sudo usermod -G vboxusers stephane

Це проблема. Тепер я бачу, що я мав би замість цього запустити:

sudo usermod -aG vboxusers stephane

Кінцевий результат - я більше не в групах, в яких я повинен бути. Включаючи будь-яку групу, яка потрібна для запуску "судо". Коли я запускаю будь-яку команду як sudo зараз, я отримую таке:

$ sudo ls
[sudo] password for stephane: 
stephane is not in the sudoers file.  This incident will be reported.

Чи є спосіб це виправити чи мені потрібно знову встановити з нуля?

Відповіді:


65
  1. Під час завантаження натисніть і утримуйте ліву Shift клавішу, і ви побачите меню GRUB.

  2. Виберіть запис, що містить ( режим відновлення ), і зачекайте.

  3. Тепер вам має бути представлено меню. Виберіть:

    remount    Remount / read/write and mount all other file systems 
    

    і зачекайте, коли ваші файлові системи зможуть встановити дозволи на читання / запис, а потім натисніть Enter.

    Якщо ця опція не відображається або не працює, ви можете замість цього вибрати rootпараметр і скористатися наступною командою для монтажу системного розділу:

    mount -o remount /
    

    Ви можете перевірити, який ваш системний розділ за допомогою fsckкоманди або переглянувши /etc/mtab.

    Після успішного запуску команди mount (тобто відсутні повідомлення про помилку) перейдіть безпосередньо до кроку 5 нижче.

  4. Після вибору remountопції меню знову з’являється. Виберіть:

    root       Drop to root shell prompt
    
  5. Тепер введіть одну з наступних команд, щоб повторно додати користувача до adminгрупи (для Ubuntu 11.10 та новіших версій):

    adduser <USERNAME> admin
    

    або до sudoгрупи (для Ubuntu 12.04 та новіших версій):

    adduser <USERNAME> sudo
    
  6. Перезавантажте програму, і ви зможете використовувати її sudoзнову.


3
Якщо ви не бачите меню "перезавантажити", ви можете спершу вибрати "fsck", воно перетворить вашу файлову систему для читання / запису. Після цього ви можете додати свого користувача в кореневому режимі.
Jiejing Zhang

1
Це працювало для мене, за винятком того, що мені довелося монтувати файлову систему за допомогою команди mount -o remount,rw /.
Пассуф

Це прекрасно працює. Крім того, це виглядає як велике питання безпеки. Я думаю, вам слід відключити цю функцію на чутливих машинах? - У режимі відновлення я ніколи не можу перезавантажитись. Мені завжди доводиться користуватися reboot -f.
Ромен Вінсент

15

Якщо ввімкнено кореневий логін у вашій системі, просто опустіть термінал через Control+ Alt+ F1без входу в X. Увійдіть як корінь, а потім просто додайте потрібного користувача до adminгрупи (для Ubuntu 11.10 та новіших версій):

adduser desired_user_name admin

Для Ubuntu 12.04 та новіших версій додайте користувача до sudoгрупи:

adduser desired_user_name sudo

Якщо ви не ввімкнули кореневий вхід, просто виберіть режим відновлення від Grub та спробуйте скористатися оболонкою root.

Коренева оболонка

Змонтувати файлову систему як читання-запис:

mount -o rw,remount /

Після цього ви можете знову додати бажаного користувача до групи admin(або sudo).


Але я не можу отримати доступ до судо від свого користувача!
Джеймі Хатбер

7

Я спробував різні комбінації, зробивши те ж саме, що, здається, опція меню повторного перегляду не є в 12.10. Я спробував все інше в цій публікації з root. Останній був

umount -a
mount -o -w /<path> /

Це призвело до того, що файлова система все ще залишається ro через налаштування у fstab для завантаження ro на файловій системі помилка, я думаю, що в ній зазначено, що це здавалося, що це ro після монтування.

Нарешті я це впорався

mount -o rw,remount /

Хоча я не впевнений, чим це відрізняється від попереднього набору команд.

Після застосування цього варіанту додавання користувача до групи admin(11.10 та ealrier) або sudo(12.04 і пізнішої версії) робиться так само:

adduser username admin    # 11.10 and earlier
adduser username sudo     # 12.04 and later

2

Старе питання, але трапилося і зі мною (Ubuntu 14.04).

Мені не вдалося увійти в режим відновлення та отримати доступ до кореневої оболонки, оскільки багато відповідей тут і деінде описують: доступ до кореневої оболонки від GRUB, схоже, захищений паролем.

Тому я вирішив проблему таким чином:

  1. завантаження на живій палиці usb
  2. відкрити оболонку
  3. отримати доступ до основної файлової системи HD Linux (її місце монтажу можна знайти в адресному рядку провідника файлів GUI, як правило, після CTRL-L). cdв це.
  4. відредагувати файл etc/group(скажімо, nano etc/groupабо що-небудь інше)
  5. знайдіть рядок "судо". Має виглядати такsudo:x:27:admin,bob,alice
  6. додайте себе до sudoрядка, розділені комами

Звичайно, це означає, що файл etc/sudoersвсе ще тримає рядок

%sudo   ALL=(ALL:ALL) ALL

це означає, що всі члени групи sudoмають тотальний контроль. Спочатку перевірте це.

Працював безвідмовно.


0

Я зробив ту саму помилку, додавши свій обліковий запис до групи (забув -a). У мене система була встановлена ​​з ввімкненим корінним входом, і мій обліковий запис був єдиним на комп'ютері.

Прийнята відповідь мені не допомогла. Під час завантаження в режим відновлення все, що я отримав, - це недобре повідомлення

Неможливо відкрити доступ до консолі, кореневий обліковий запис заблоковано. Детальнішу інформацію див. У головній сторінці «sulogin (8)».
Щоб продовжити, натисніть ENTER

Після натискання клавіші ENTER система завантажилася нормально: не пощастило отримати доступ до кореня, щоб усунути проблему. Я залишаю цю відповідь, якщо до цього моменту хтось опиниться в моїх черевиках. Використовуйте наступне, лише якщо ви не можете перейти в режим відновлення через меню Grub .

Посібник для отримання кореневої оболонки:

  1. Завантажтесь у меню Grub та виділіть (але не натискайте Enter!) Звичайний варіант завантаження (за замовчуванням, не відновлення!).
  2. Натисніть e. Grub покаже редактор командного рядка з декількома рядками, кожен з яких може виглядати незнайомим, якщо не залякати. Не хвилюйтесь, будь-які внесені вами зміни не будуть збережені назавжди.
  3. Знайдіть рядок, який читається linux ... ro .... Це командний рядок ядра. Замінити roтокен rw, щоб зробити кореневу файлову систему читання / запис, і додати ще один параметр командного рядка ядра, init=/bin/sh. Це вказує ядру виконувати shзамість /sbin/init. Зрештою, лінія повинна мати вигляд linux ... rw init=/bin/sh .... Примітка: Ви можете обійтись навіть за допомогою простого grub>підказки. Я з радістю поясню, як, крок за кроком, якщо все інше не вдасться для вас; просто залиште коментар до цієї відповіді.
  4. Після зміни натисніть, F10щоб скористатися командами редактора для завантаження системи (або прочитайте інструкції щодо завантаження прямо під вікном редактора, якщо ваш Grub складено інакше). Ви отримаєте підказку кореневої оболонки, оскільки процес init працює як PID 1 з ідентифікацією root.
  5. Наприклад, зробіть потрібні зміни usermod -a -Gadm,sudo YOURUSERID. Підтвердьте, id -a YOURUSERIDщо ви повернули своє членство в судо. Якщо ви отримаєте помилку "Команда не знайдена", використовуйте /sbin/usermodта /bin/id.
  6. У цей момент ви не можете вимкнути чи перезавантажити систему. reboot, haltабо poweroffне працюватиме, і exitз оболонки призведе до паніки ядра, оскільки не очікується, що процес PID 1 просто завершиться. Отже, наступні дві команди, які ви повинні видати, це:

    sync
    exec /sbin/init
    

    syncна всякий випадок, коли щось піде не так, щоб зберегти всі зміни на диску та execзамінити оболонку на справжню init(яка може бути систематизована, upstart або System V init, але це завжди називається /sbin/init). Система, швидше за все, продовжить завантажуватися нормально (немає режиму відновлення).

  7. Увійдіть і перезавантажте систему один раз, наприклад, - sudo rebootви повинні повернути собі привілей sudo. Рекомендується перезавантаження, оскільки (хоча це дуже рідко) initможуть бути передані додаткові параметри під час звичайного завантаження, а цього ми не робили. У разі execневдачі, просто перезавантажте машину і дайте їй нормально завантажитися. Усі сучасні файлові системи журналів, такі як ext4, xfs та btrfs, швидко відновлюються (максимум кілька секунд для перевірки журналу, якщо він syncредагується перед скиданням), і все буде налаштовано.

Трохи тла

Була дискусія у звіті про помилки Debian про цю саму проблему, і, наскільки я розумію, це було вирішено особливістю, а не помилкою, що, на мою думку, було скоріше помилкою. Займаючись цим бізнесом протягом 25 років, я не можу не погодитися з аргументом Майкла Бібля в повідомленні №31 у цій темі:

Врахуйте це: у вас ноутбук із заблокованим кореневим обліковим записом. За замовчуванням завантажувач grub-завантажувача створює завантажувальний запис для режиму порятунку. Тож, навіть якщо ви заблокуєте біосистему, щоб не дозволяти завантажувати з CD-Rom чи USB, а ви захищаєте паролем grub, хтось може легко отримати кореневий доступ, якщо залишити ноутбук на мить без нагляду.

Правильне, IMO, якщо не загальне, заперечення було висловлене у повідомленні № 70 Феліпе Сателером:

Для багатьох (більшості?) Комп'ютерів фізичний доступ означає, що гра втрачає безпеку, оскільки ви можете просто розібрати коробку та отримати жорсткий диск.

Це стосується особливо ноутбука, згаданого в аргументі Майкла: якщо ви залишите його на мить без нагляду, а хтось піде за вашими даними, ноутбук буде просто відпадений, щоб його більше ніколи не побачили. І для будь-якої машини, не «багатьох» чи «більшості», навіть тих, хто набрав 8 балів у стійку, як тільки зловмисник отримає фізичний доступ до машини, гра справді закінчена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.