Чи можна переустановити sudo після видалення?


61

Це здається проблемою з курячим яйцем. Найпоширеніша задача використання sudo- встановлення та видалення програмного забезпечення.

sudo apt-get purge <appname>

Але sudoсебе можна зняти.

sudo apt-get purge sudo # Do not run this command on production computers!

Ось тут і приходить веселощі

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Хоча очевидно, що жодна людина, що має розум, не буде чиститися sudo(крім мене), когось не можна обдурити, щоб запустити цю команду (не безпосередньо, у її шестигранному режимі чи як би там не називалося), або людина могла б SSH маскуватися під технічного гуру і роби безлад .

То чи існує спосіб перевстановлення судо?


3
хороший я ніколи навіть не знав, що судо теж може бути очищеним! Linux так просто чортовий, що настроюється!
user247696

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

Усі відповіді залежать від способу доступу до файлової системи з привілеями. Для прикладу (лічильник): у моєї Android Asus Memopad немає sudoі не має "безпечного завантаження" або аналогічного. Єдиний спосіб, про який я знаю, - це перейти до xda-devі попередньо складеного повного пакета встановлення. Вам пощастило, так би мовити, що у вас немає цього обмеження.
Карл Віттофт

@CarlWitthoft Android є похідною Linux, ніж насправді дистрибутивом Linux. Також в Google внесла багато змін (які ненавидять більшість любителів Linux). Укорінення , яке добре відомо на смартфоні Android, - це не що інше, як спроба набути повноважень реального linux на android.
Зареєстрований користувач

4
Ви не можете просто увійти як root?
Konrad Höffner

Відповіді:


56

Я можу встановлювати програми, використовуючи:

pkexec apt-get install <appname>

Від man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Отже, я гадаю, що це також pkexec apt-get install sudoмає працювати.


Редагувати : тепер я можу підтвердити: так , sudoможна встановити за допомогою pkexec apt-get install sudo:

перевстановити sudo

( натисніть для збільшення )


@RaduRadeanu Це цікаво, я збираюся спробувати це дякую u ......
Premkumar

@Premkumar Перевірте це з обережністю! Остання команда з екрану зйомки має бути , ймовірно , тільки в вашому випадку: sudo apt-get install gksu ubuntu-minimal. Але краще перевірити, з якими пакунками було видалено одночасно sudo.
Radu Rădeanu

5
@Thebluefish Пакет викликається policykit-1(станом на 12.04). Його можна видалити, але за рахунок видалення пакунків, які ви зазвичай хочете в настільній системі, таких як gnome-coreі ubuntu-desktop(на сервері, швидше за все, не потрібен будь-який необхідний пакет). Однак, Раду, що визначає те, що твій акаунт може використовувати pkexec apt-get …? Це щось, що ви налаштували, або це відбувається автоматично, і якщо так, то що визначає, що обліковий запис може це зробити?
Жиль

1
@Gilles Я не пам'ятаю, щоб в минулому робилися певні конфігурації. Отже, я вважаю, що це відбувається автоматично. Якщо ви знаєте, що визначає, що обліковий запис може це зробити, будь ласка, поділіться; це поза моєю областю знань.
Radu Rădeanu

2
@Gilles Я думаю, що члени sudoгрупи можуть використовувати pkexec. (Мій досвід полягає в тому, що додавання користувачів до цієї групи надає pkexecздібності, а видалення їх з неї видаляє pkexecздібності; таким чином, pkexecздається, надаються sudoздібності так само, як і здібності в sudoersконфігурації за замовчуванням , що має сенс, оскільки можливість sudoі pkexecяк root є головним чином те, що робить користувача адміністратором в Ubuntu.) Я не думаю, що видалення sudoвидалить sudoгрупу. Але я не зовсім впевнений, що мої припущення вірні за будь-яких розумних обставин.
Елія Каган

29

Ви завжди можете завантажитися в режим відновлення , перейти до кореневої оболонки та встановити її без sudo.


16
ви можете додати істотну та відповідну частину за посиланням тут?
Зареєстрований користувач

Якщо відновлення в меню завантаження grub не доступне, натисніть <kbd> e </kbd> і додайте `single` до завантажувальної лінії. Потім, після завантаження, встановіть пароль root, використовуючи passwd. Перезавантажте звичайно, у командному рядку введіть suновий пароль і запустіть apt-get install sudo(без sudo-префікса)
ExploWare

1
Як ви отримали підключення до Інтернету на кореневій оболонці?
Авінаш Радж

22

Так, перевстановлення sudoпакету було б можливим методом chroot .

  • Перше завантаження з живого диска Ubuntu.

  • Встановіть раніше встановлений розділ Ubuntu в будь-який каталог, який ви хочете. У моєму випадку я змонтував його /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • За замовчуванням ви не змогли встановити підключення до Інтернету після того, як увійшли в розділ. Отже, запустіть команду нижче, щоб вона працювала.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Дякуємо @Oli за цей чудовий фрагмент коду.

  • Тепер chroot у цей встановлений каталог,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Встановити sudoпакет, запустивши,

    # apt-get install sudo
    
  • Тепер вийдіть із закріпленого середовища.

    exit
    
  • Нарешті завантажте Ubuntu OS.Now протестуйте свою sudoкоманду, вона, безумовно, спрацює.


4

Завантажте додатковий параметр init=/bin/shу командному рядку ядра. Це переведе вас безпосередньо в кореневу оболонку, звідки ви можете просто запустити apt-get install sudoта перезавантажити. Можливо, вам доведеться запустити, /etc/init.d/networking startщоб спочатку встановити робоче мережеве з'єднання. Якщо ви запитаєте мене, набагато простіше, ніж возитися з компакт-дисками для відновлення чи живими дисками.


1

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

su
apt-get install sudo

введіть тут опис зображення

Натисніть тут, щоб збільшити


це працює, якщо кореневий обліковий запис увімкнено, а в ubuntu зазвичай відключений. suна моєму комп’ютері дає "su: Помилка автентифікації", хоча я
вказав

так, ви правильні, це те, що я сказав. Якщо ви вже оновили пароль кореневого облікового запису користувача, тоді ви не турбуєтесь про очищення. sudoТепер спробуйте sudo passwd root, це дозволить вам оновити пароль кореневого облікового запису користувача. Тепер перейдіть на свій кореневий рахунок запустивши команду. Після того, як suви зможете увійти в систему, ви зможете очистити sudo.Now очистити sudo від. sudo apt-get purge sudoУвійдіть у свій кореневий обліковий запис, щоб перевстановити пакет sudo, запустівши suіapt-get install sudo
Avinash Raj

-1

sudo (і будь-яка інша привілей root) стосується лише запущеної ОС. Якщо ви нерозумно видалили sudo (або / usr / для цього питання) і не маєте альтернативних варіантів, таких як pkexec, ви можете просто завантажитися з чогось іншого, скопіюйте програмне забезпечення, що відсутнє, і перезавантажте його знову.

Фізичний доступ анулює будь-яку безпеку програмного забезпечення у вашій системі.


Я рекомендую розширити це, щоб пояснити, що ви маєте на увазі під "копіюванням наявного програмного забезпечення".
Елія Каган

Це не дуже простий спосіб виправити це.
Сет

@Seth без втручання я серйозно сумніваюся, що це можна виправити, не написавши іншої відповіді.
Брайам

Ну правильний спосіб зробити це було б chroot, але існує так багато менш варварських способів. Наприклад, увійшовши як root (спосіб NORMAL) або, якщо у вас чомусь немає пароля root, просто встановіть init = / bin / bash як параметр ядра, і ви пройдете повну систему init, включаючи аутентифікацію входу.
Оріон

-2

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

Судо вам зовсім не потрібно. Це лише ледачий ярлик, який дозволяє виконувати кореневу команду, фактично не входячи в систему як root. Однак, якщо вам доведеться робити щось більше, ніж одну команду, просто жахливо постійно префіксувати все судо. Не кажучи вже про те, що використання sudoробить користувачів невідомими щодо роботи дозволів та кореневих облікових записів. Набагато більше сенсу просто увійти як root, виконувати адміністрування системи та вихід із системи. Це ви робите, suякщо ви вже ввійшли як звичайний користувач. Або ви можете увійти безпосередньо як root.

Звичайно, вам потрібно встановити rootпароль, це розумна конфігурація, інакше у вас є система, схожа на Windows, де є дії, які ніхто не може виконувати, і ви дійсно заблоковані, якщо якимось чином sudoнедоступний (це вимагає роботи /etc/, встановлення $PATHта іншого речі, встановлені - яких у вас може не виникнути, якщо щось завантажиться рано під час завантаження).


Це може бути корисною інформацією, але це не відповідає на питання.
Luís de Sousa

Справді. Це на самому ділі не то, що ставлення до системи , де пароль суперкористувача є інвалідом і Судо буде встановлений за замовчуванням. А якщо ви подивитесь на інші відповіді, то побачите, що останній абзац теж не відповідає дійсності.
Олі

Користувач, який розглядає можливість видалення sudoз ubuntu, також повинен розглянути можливість встановлення пароля root (в інших питаннях вказано, як це зробити). Користувач, який не хвилює ці речі, може продовжувати використовувати sudo.
Оріон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.