Существуют различные инструменты для различных рабочих столов, целью которых является запуск графического приложения от имени пользователя root. gksudo
, kdesudo
, empower
и т. Д.
Но что, если я пишу сценарий, который можно использовать на любом рабочем столе Linux? Есть ли xdg-sudo
какого-то рода ..? Стандарт получения доступа sudo в среде рабочего стола?
После @Tachyons предложения я исследовал МНОГО о pkexec
и это является потрясающим!
Таким образом да, это отвечает всем требованиям, и я предполагаю, что это - самая близкая вещь, которой может быть "универсальный gksudo".
Тем не менее pkexec
фронтенд командной строки к PolicyKit. Существует 2 основных режима работы:
Просто выполните его, как Вы были бы с sudo
, и Вы получаете хорошую подсказку GUI:
$ pkexec rm -rf /
/usr/share/polkit-1/rules.d
, и это позволит большую настройку и связанные с безопасностью опции, например, корневой доступ для определенных действий только, никакой потребности пароля для других, доступ, ограниченный определенными путями, и т.д. Можно подстроить настройки с удивительной гранулярностью.Нет, стандартного способа получения привилегий root (или любого другого пользователя) не существует.
Если вы хотите быть совместимыми с как можно большим количеством систем, не предполагайте, что это так, а скажите пользователю, что он / она должен запустить ваш скрипт как конкретный пользователь. Затем пользователь / администратор должен настроить систему так, чтобы ваш скрипт выполнялся должным образом.
Было бы неплохо сделать несколько советов о том, как использовать наиболее распространенные системы аутентификации, такие как su, sudo и ConsoleKit.
Более общим способом было бы написать «вспомогательную программу». Такая программа предложит пользователю ввести пароль; если вы уверены, что, скажем, Zenity установлен, вы можете использовать его, в противном случае вам нужно будет написать вспомогательную программу на Python или что-то еще, что может взаимодействовать с GUI.
Прочтите руководство sudo
для опций -A
(«askpass») и -S
(stdin).
И помните, что когда вы запускаете sudo
из своего скрипта, вам нужна опция -H
(home) для симуляции gksudo
.
Этот метод работает хорошо, но вам необходимо тщательно протестировать вспомогательную программу, чтобы убедиться, что она не содержит ошибок.