Чи є настільно нейтральний gksudo?


17

Існують різні інструменти для різних настільних ПК, які мають на меті запустити графічний додаток як root. gksudo, kdesudo, empowerІ т.д. ...

Але що робити, якщо я пишу сценарій, який можна використовувати на будь-якому робочому столі Linux? Чи є xdg-sudoякась ..? Стандарт для отримання доступу до sudo у середовищі робочого столу?

Відповіді:


16

Слідом за пропозицією @Tachyons, я дослідив багато, pkexecі це приголомшливо !

  • Він є частиною пакета PolicyKit , що широко використовується.
  • Організовується та спонсорується сайт freedesktop.org
  • За замовчуванням у Gnome , Unity , MATE , Cinnamon , KDE , LXDE та XFCE та, можливо, інших
  • Працює через D-Bus, тому він абсолютно нейтральний настільний, з чітко визначеним протоколом.
  • У багатьох ДП він використовується в декількох сервісах, таких як екран входу, вимкнення / перезапуск, управління дисками (udisks / automount) тощо.

Так, так, він відповідає всім вимогам, і, мабуть, це найближче, що може бути "універсальним gksudo" .

Сказане pkexec- це командний рядок для FrontKit. Існує 2 основних режими роботи:

  • Просто запустіть його як слід sudo, і ви отримаєте приємний графічний інтерфейс:

    $ pkexec rm -rf /

pkexec GUI-інтерфейс

  • Або створіть для вашої програми файл авторизації PolicyKit, опустіть його /usr/share/polkit-1/rules.d, і це дозволить здійснити велику кількість параметрів налаштування та безпеки, наприклад, кореневий доступ лише до певних дій, відсутність пароля для інших, доступ обмежений певними шляхами і т. д. Ви можете точно налаштувати налаштування з надзвичайною деталізацією.

6

Більш загальним способом було б написати «програму-помічник». Така програма запропонує користувачеві ввести пароль; якщо ви впевнені, що, скажімо, Zenity встановлений, ви можете використовувати це, інакше вам потрібно буде написати програму-помічник у Python або щось інше, що може взаємодіяти з графічним інтерфейсом.

Прочитайте sudoпосібник щодо параметрів -A("пропускний запит") та -S(stdin).

І пам’ятайте, що при запуску sudoзі свого сценарію вам потрібна -H(домашня) опція для імітації gksudo.

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


1
Вам також потрібно обробляти передачу токена xauth у вашій програмі - що не є тривіальним.
symcbean

4

Ні, немає жодного стандартного способу отримання привілеїв root (або будь-якого іншого користувача).

Якщо ви хочете бути сумісними з якомога більшою кількістю систем, не припускайте жодного способу, але скажіть користувачеві, що вона / він має запустити ваш сценарій як конкретний користувач. Тоді користувач / адміністратор повинен налаштувати систему, щоб ваш сценарій запускався належним чином.

Було б непогано зробити пропозиції щодо використання найпоширеніших систем аутентифікації, таких як su, sudo та ConsoleKit.


Що стосується початку 2009 року, але, на щастя, зараз polkit(formely PolicyKit) досить поширений, щоб вважати його стандартом.
MestreLion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.