Як повернути судо на Ubuntu?


12

Я зробив це:

sudo chown -R myname /usr/

і тепер я не можу використовувати sudoкоманду через цю помилку:

sudo: має бути встановлений root

Оскільки я читав це означає, що власник цього файлу /usr/bin/sudoне є коренем. Зараз це мій користувач із-за клоуна в /usrпапці.

На багатьох форумах і блогах люди пропонують це зробити як корінь:

# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo

... але проблема з цим полягає в тому, що мені потрібно увійти як root, але я не можу, тому що якщо я записую suв термінал, пароль невірний (фактично я використовую пароль, що я додав своєму користувачеві):

$ su
Password:
su: Authentication failure

Тож чи можу я повернути sudoкоманду?

Редагувати: Мій Ubuntu знаходиться в розділі Паралелі на моїй Mac OS X.


Що ви маєте на увазі під "Я використовую пароль, що я додав своєму користувачеві"? Під час використання suвам буде запропоновано пароль root , а не пароль вашого користувача, як, наприклад, з sudo. Чи знаєте ви кореневий пароль для цієї машини?
Калеб

Ні, мені ніколи не потрібно було додавати чи змінювати його, чи є це за замовчуванням?
Адам

Вам потрібно перезавантажити в режимі одного користувача. Який дистрибутив ти працюєш?
Жил 'ТАК - перестань бути злим'

1
Просто цікаво, але що змусило вас запустити sudo chmod -R cirk:cirk /usrте, що ви намагалися досягти?
вільноканон

1
Програма, що була встановлена ​​десь у / usr /, оскільки я не знав точного розташування програми, я вирішив використати chown у всій папці usr, і тому що я ноб, я знову все викрутив: P
Adam

Відповіді:


5

Якщо у вас є подібна система, яку ви можете використовувати в якості посібника, щоб побачити, що таке правильне володіння всіма файлами, ви можете завантажитися в режим порятунку, перейти до кореневої оболонки та вручну відновити правильне володіння всіма файли в /usr.

Найшвидшим способом може бути перевстановлення ОС або відновлення з резервного копіювання.

У Ubuntu чи подібних, тоді за замовчуванням немає кореневого пароля (обліковий запис вимкнено), тому ви не можете su.


8
Вуа, просто там, це не переустановка Windows - це не завжди найпростіший або найшвидший спосіб зробити що-небудь, і, звичайно, не вчить людей, як вирішувати проблеми. У цьому випадку все, що йому потрібно зробити, - це відмінити дію, яку він здійснив, яку можна легко виконати, встановивши файлову систему в іншому середовищі, як LiveCD або запропонований вами режим порятунку (залежно від дистрибутива).
Калеб

@Caleb, коли ви повністю втрачаєте дозволи на головний фрагмент файлової системи. Він не просто накрутив sudo, імовірно, забув згадати у своєму посту про те, що він використовував -R (інакше він змінив би лише власника каталогу / usr, а не sudo). Я також описав, як змінити процес, але це дуже трудомістка та кропітка задача.
psusi

1
Це справа chownне chmod. Оскільки все в /usrпапці повинно бути root:root, це має бути легким виправленням, а не кропітким виправленням, яке chmodозначатиме клобер.
Калеб

2
@Caleb не все в / usr має бути root: root.
psusi

6
@Caleb chownскидає біти сетксиду. Є кілька файлів /usr, які не належать кореню; більше, що знаходяться в іншій групі (особливо у встановлених програмах /usr/bin).
Жил "ТАК - перестань бути злим"

11

Оскільки ви розмістили дозволи на єдиному, що надає вам доступ до кореневого рівня, вам знадобиться допомога ЗОВНІШНЬОГО поточного програмного середовища, щоб виправити це.

Я пропоную, що найпростішим способом є завантаження LiveCD для вашого дистрибутива, встановлення диска та зміна дозволів на файл, використовуючи chmodперелічені вище звідти.

Ви також можете спробувати завантажитися в однокористувацький режим, щоб отримати кореневу оболонку.

Будьте в курсі, що зазвичай всі речі в /usr/каталозі повинні бути власниками, rootтому ви просто зможете зробити рекурсивну помилку, chownщоб виправити все, що ви зламали. ( Edit: Per @Gilles коментарі , очевидно , працює chownбрейки Setuid і setgid біти, так що вам буде потрібно вручну порівняти з існуючою системою , щоб відновити всі ті , як тільки ви знову закріпити право власності) .

Однак дуже FEW має бути 4111. Цей додатковий - це спеціальний дозвіл, але він змушує його виконувати як root, навіть коли він працює як користувач! sudoЦей біт дозволу повинен бути встановлений лише для декількох команд. Якщо ви не запустили a chmodдля початку, вам, ймовірно, це зовсім не потрібно виправляти , усі дозволи вже повинні бути правильними. Не запускайте велику chmodоперацію, не знаючи, якими мають бути всі дозволи.


Чи можливо, якщо ОС знаходиться у віртуальній машині?
Адам

Так, це не має ніякого значення. Ви можете використовувати runlevel 1 (що можна зробити на самому початку процесу завантаження з grub / lilo або wahtever вашого завантажувача), або ви можете налаштувати VM для використання ISO-зображення LiveCD як завантажувального пристрою.
Калеб

ага, задовго до того, як я його переустановлюю, я спробую вашу пораду :)
Адам,

добре, я думаю, що я в LiveCD, тепер мені потрібно написати це в терміналі? sudo chown -R root /usr/?
Адам

Я почніть з цього, але не на /usrLivdCD, вам потрібно десь встановити його і бігти проти цього шляху, скажімо /mnt/mydrive/usr. Тоді вам потрібно буде зафіксувати встановлений біт /mnt/mydrive/usr/bin/sudo. Потім перегляньте / usr на livecd і перевірте, чи є інші права власності, крім root. find /usr -not -uid 0і змінити їх на відповідність. Потім шукайте речі, у яких встановлені різні встановлені або жорсткі біти, і переконайтеся, що вони теж відповідають. Якщо у вас є справжня система Ubunutu, для порівняння це було б найкраще.
Калеб

4

У режимі відновлення Ubuntu введіть наступні команди. Це зафіксувало для мене випуск.

mount -o remount,rw /
mount --all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
restart

Сподіваємось, це вирішить вашу проблему. (Або когось іншого)

Я знайшов це тут у цій публікації в блозі .


2

Це набагато простіше, ніж пропонують інші відповіді. Не потрібно форматувати, перезавантажувати або використовувати живий компакт-диск.

su root # then enter your password to switch to root user
chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo
exit # to get back to the original user

Це найпростіший спосіб виправити це питання. Пояснення, судо пошкоджене (я знаю, що пошкоджений - це неправильний термін, але він не працює, тому нам потрібно уникати використання судо)

  • Використовуючи команду 1 (su root) , ми змінюємо користувача на root без використання sudo.
  • Використовуючи команду 2 (chown root: root / usr / bin / sudo && chmod 4755 / usr / bin / sudo) , ми фіксуємо дозволи / право власності на sudo.
  • Використовуючи команду 3 (вихід) , ми повертаємося до початкового користувача.

Я перевірив цей метод на монетному дворі Linux. Яка система, схожа на ubuntu. Дайте мені знати, що цей метод не працює на будь-якій іншій ОС. Відповідь буде оновлено відповідно.

Дякую


Як я розумію, за замовчуванням кореневий обліковий запис не має пароля, тому неможливо вказати пароль на першому кроці su root, а оскільки sudoне працює, встановити root пароль неможливо
TitanFighter

1
Спасибі це мені допомогло.
Арун

1

Це простіше, ніж це роблять люди. Спробуйте наступне:

  1. Замість того, щоб намагатися увійти як root за допомогою зламаної suкоманди, вийдіть як поточний користувач та ввійдіть знову як root через звичайний Менеджер дисплеїв (тобто екран входу).
  2. Виконайте наступне на терміналі: chown root:root /usr/bin/sudo && chmod 4755 /usr/bin/sudo

Це повинно виправити sudoкоманду, і ви знову і знову запустите її.


0

Для входу як root, без su або sudo, ви можете використовувати pkexec:

pkexec su

Тепер змініть дозволи файлів:

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