Як отримати підказку пароля GUI sudo без командного рядка?


10

Наразі для всіх моїх команд, які потребують кореневого доступу, я маю їх набрати в командному рядку.

Я хотів би, щоб графічний інтерфейс запропонував мені ввести свій пароль, коли потрібен sudo, замість того, щоб набирати команди з командного рядка.

Чи є якийсь спосіб увімкнути це? Раніше одна версія робочого столу Ubuntu мала цю функцію поза коробкою.

Цю версію Ubuntu (яку я зараз працюю) я оновив із встановлення сервера.

Додам, мій обліковий запис користувача вже додано до групи sudo. Таким чином , я можу виконувати команди , такі як sudo geditабо , sudo apt-getале я не в змозі встановити програмне забезпечення в Ubuntu Software Center.

Відповіді:


10

TL; DR: Спробуйте встановити пакети policykit-1та policykit-1-gnome.

Ймовірно, вам потрібен polkit (він же PolicyKit).

Більшість утилітів для графічного адміністрування системи Ubuntu, включаючи Програмний центр, зазвичай можна запускати без sudoнічого подібного. Ви просто запускаєте їх так само, як і будь-яку програму.

Коли настає час виконати завдання, що вимагає привілеїв root, вони використовують polkit для виконання необхідних дій. polkit - це окремий механізм від sudo, що дозволяє адміністраторам виконувати дії як root. Він встановлений у настільних системах Ubuntu, але за замовчуванням не є частиною установок сервера Ubuntu.

Таким чином, звичайна поведінка Програмного центру полягає в тому, що ви можете викликати його просто так software-center, він не запропонує вам аутентифікувати в той час, але тоді, коли ви скажете йому встановити або видалити програмне забезпечення, він запропонує (графічно) пройти автентифікацію.

З вашого опису звучить так, що ваша система запускалася як система Ubuntu Server без графічного інтерфейсу, а потім ви встановили графічний інтерфейс. Можливо, пакети policykit-1Встановіть policykit-1 та policykit-1-gnomeВстановіть policykit-1-gnome не встановлені. Якщо ви встановите, polkit, швидше за все, почне працювати для Software Center та інших подібних утиліт.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Тоді ви зможете просто запустити:

software-center

(Або виберіть Програмний центр графічно, як це передбачено будь-яким середовищем на робочому столі, яке ви встановили.)

Якщо ви хочете повністю функціональну систему настільних систем Ubuntu, я рекомендую встановити метапакет для будь-якого "аромату" Ubuntu, в який ви хочете перетворити вашу систему. В основному, якщо ви хочете звичайну систему настільних систем Ubuntu, встановіть ubuntu-desktopВстановіть ubuntu-desktop .

sudo apt-get update
sudo apt-get install ubuntu-desktop

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

Для отримання додаткової інформації див. Як запускати Ubuntu Server з графічним інтерфейсом?

sudo з графічною автентифікацією.

Якщо вам дійсно потрібні запустити команди як root, але ви отримаєте графічний діалог аутентифікації, ви шукаєте gksudo( абоgksu ). Це передбачено пакетом gksuВстановити gksu . Це графічний інтерфейс для sudo.

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

Ви можете бігти gksudoз терміналу, але цього не потрібно. Ви можете запустити його з діалогового вікна Alt+ F2(запустити команду) або поставити його у Exec=рядок .desktopфайлу (або будь-яким з інших способів запуску графічних програм).

Зауважте, що вам слід розглянути можливість використання gksudoграфічних додатків як root, навіть коли ви запускаєте їх з терміналу, оскільки такі команди, як, sudo ...де ...є графічний додаток, можуть насправді порушувати конфігурації для некористуючих користувачів, які запускають їх. (На щастя, це можна виправити.) sudo geditОсобливо горезвісний.

Для отримання додаткової інформації про проблему з sudoграфічними додатками та що робити замість цього, див.

Існує також графічний спосіб на основі polkit ... для неграфічних команд.

gksudoпрекрасно працює як для графічних, так і не графічних програм. Вам, мабуть, варто скористатися цим.

Але альтернативою є використання polkit замість того, щоб sudoпрацювати лише для не графічних програм pkexec.

Наприклад, якщо ви запускаєте pkexec touch /root/foo.txt, вам буде запропоновано діалогове вікно графічної аутентифікації, а якщо аутентифікація буде успішною, touch /root/foo.txtзапускається, створюючи ( або освіжаючи ) foo.txtв /rootпапці.

  • pkexecбуде використовувати не графічне діалогове вікно, що потребує терміналу, якщо він не може створити графічний діалог. Але це навряд чи станеться, якщо ви запускаєте його через об'єкт, наданий графічною оболонкою або робочим середовищем.
  • Чому pkexecпрацює лише неграфічна програма? Насправді він також запускає графічні програми, але тільки якщо polkit був спеціально налаштований для його дозволу - що зазвичай не робиться. Дивіться цю інформацію та відповідь , якщо вам це цікаво man pkexec(та версії верхньої частини потоку із скріншотами ) .

sudovs. polkit (деякі технічні деталі, лише якщо вас цікавить)

Новий gksu/ gksudoвикористовуватиме polkit замість того, sudoщоб виконувати свою роботу , хоча ця версія не була широко прийнята. В основному я рекомендую цей READMEфайл у його вихідному коді (написаний Густаво Норонха Сільва), який пояснює важливі відмінності між sudoі polkit. Коротко цитую це:

PolicyKit вирішує проблему програми, яка потребує більш високих привілеїв, надаючи засоби, що дозволяють користувачам аутентифікувати себе, а також для додатків для перевірки інформації про автентифікацію та авторизацію. Додаток має бути структуровано таким чином, що всі привілейовані операції виконуються (бажано) невеликою послугою D-Bus, якою командує непривілейований код. Усі "дії", які виконуються, потребують належної авторизації, яка обробляється через Policykit.

4. Навіщо підтримувати гксу?

Отже, це по суті робить gksu непотрібним, оскільки додатки більше не потрібно запускати як привілейований користувач, а автентифікацію користувача здійснює Auth Agent PolicyKit. Але додатки потрібно переробити, щоб прийняти цю нову структуру, і є деякі випадки, коли те, що ви хочете, справді є те, що запускає програми як root.

Ці проблеми лежать в основі ситуації, на яку я вважаю:

  • Програмний центр розроблений для використання polkit для підвищення привілеїв, так що в якості root потрібно виконувати лише конкретні дії. Для цього йому потрібен polkit, якого бракувало (або зламано) у вашій системі.
  • Оскільки він розроблений для використання polkit, не існує заздалегідь зробленого запуску для запуску Software Center як root. polkit ухиляється від необхідності використовувати інструменти графічного адміністрування як root, більшу частину часу.
  • Але іноді вам дійсно потрібно запустити графічну програму як root. У такому випадку ви можете використовувати gksu/ gksudo.
    (... Що в кінцевому підсумку може використовувати polkit за кадром - але gksudoнаразі в Ubuntu це традиційний, який використовується sudo).

1
Привіт Eliah, так, це був сервер без GUI, і я просто випробовував графічний інтерфейс ubuntu, я запустив команду sudo apt-get install ubuntu-desktop im не впевнений, чи встановлений комплект політик. Спробуємо встановити його все одно. Наразі модернізується з 12.04 до 14.04.
Шон

Я стикався з ситуацією, коли у мене є програма GUI, яку я хочу запустити як звичайно (некореневу), але її потрібно просто прочитати з послідовного порту, який належить root. Неможливість просто надати цій програмі єдиний привілей дійсно дратує (іншими словами, я хочу повноцінна система об'єктних можливостей).
CMCDragonkai

3
Будь ласка, це не gksuбуло застарілим і скинуто з Ubuntu 18.04
Натан Ф.

5

Зручний спосіб - створити виділений .desktopфайл або додати свої команди до вже наявного, задавши свій пароль через GUI (gksu). У наведеному нижче прикладі я додаю команду запустити Gedit та Software Center з привілеями sudo до запуску Gedit. gksuДля використання цієї установки вам знадобиться встановити:sudo apt-get install gksu

  1. Скопіюйте Gedit .desktop file in/ usr / share / applications / to~ / .local / share / applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    і відкрийте його для редагування (перетягніть його у відкрите вікно gedit)

  2. Шукайте рядок: Actions = Window; Document;

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

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Додайте відповідні розділи внизу файлу:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Закрийте файл і перетягніть його на панель запуску

Тепер ви можете запустити gedit та програмний центр з привілеями sudo:

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

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


Справді. У мене немає заперечень. Причиною, що я прокоментував USC, є те, що основна частина питання полягає в тому, як ОП може зробити так, щоб їх система , створена з установки сервера, працювала як звичайна система настільних систем Ubuntu щодо графічної автентифікації для адміністративних завдань. Моя відповідь фокусується на цьому і пояснює загальні риси запущених програм як графічно. При цьому вона скупиться на механіку gksu/ gksudo. Тож ваша відповідь і гарна, і потрібна! Я просто сподіваюся, що ОП також встановлює / виправляє polkit, оскільки я думаю, що це змусить ОС працювати так, як вони хочуть.
Елія Каган
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.