Есть ли десктоп-нейтральный гксудо?

Существуют различные инструменты для различных рабочих столов, целью которых является запуск графического приложения от имени пользователя root. gksudo, kdesudo, empower и т. Д.

Но что, если я пишу сценарий, который можно использовать на любом рабочем столе Linux? Есть ли xdg-sudo какого-то рода ..? Стандарт получения доступа sudo в среде рабочего стола?

17
задан 9 February 2013 в 05:13

3 ответа

После @Tachyons предложения я исследовал МНОГО о pkexec и это является потрясающим!

  • Это - часть PolicyKit, широко используемого пакета.
  • Размещенный и спонсируемый freedesktop.org
  • Значение по умолчанию в Gnome, Единице, ПОМОЩНИКЕ, Корице, KDE, LXDE и XFCE и возможно других
  • Работы через D-шину, таким образом, это абсолютно настольно-нейтрально с четко определенным протоколом.
  • Во многих DES это используется в нескольких сервисах как экран входа в систему, завершение работы/перезапуск, управление дисками (udisks/automount) и так далее.

Таким образом да, это отвечает всем требованиям, и я предполагаю, что это - самая близкая вещь, которой может быть "универсальный gksudo".

Тем не менее pkexecфронтенд командной строки к PolicyKit. Существует 2 основных режима работы:

  • Просто выполните его, как Вы были бы с sudo, и Вы получаете хорошую подсказку GUI:

    $ pkexec rm -rf /

pkexec GUI prompt

  • Или создайте файл авторизации PolicyKit для Вас приложение, отбросьте его в /usr/share/polkit-1/rules.d, и это позволит большую настройку и связанные с безопасностью опции, например, корневой доступ для определенных действий только, никакой потребности пароля для других, доступ, ограниченный определенными путями, и т.д. Можно подстроить настройки с удивительной гранулярностью.
16
ответ дан 9 February 2013 в 05:13

Нет, стандартного способа получения привилегий root (или любого другого пользователя) не существует.

Если вы хотите быть совместимыми с как можно большим количеством систем, не предполагайте, что это так, а скажите пользователю, что он / она должен запустить ваш скрипт как конкретный пользователь. Затем пользователь / администратор должен настроить систему так, чтобы ваш скрипт выполнялся должным образом.

Было бы неплохо сделать несколько советов о том, как использовать наиболее распространенные системы аутентификации, такие как su, sudo и ConsoleKit.

0
ответ дан 9 February 2013 в 05:13

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

Прочтите руководство sudo для опций -A («askpass») и -S (stdin).

И помните, что когда вы запускаете sudo из своего скрипта, вам нужна опция -H (home) для симуляции gksudo.

Этот метод работает хорошо, но вам необходимо тщательно протестировать вспомогательную программу, чтобы убедиться, что она не содержит ошибок.

0
ответ дан 9 February 2013 в 05:13

Другие вопросы по тегам:

Похожие вопросы: