Из следующих вопросов
мы видим, что gksu больше не будет поддерживаться в долгосрочной перспективе и не будет установлен по умолчанию с> = 13.04. Вместо этого мы должны использовать pkexec, который прекрасно работает для неграфических приложений, но не для приложений в графическом интерфейсе:
pkexec gedit
при замене gksu в файле .desktop
EXEC=pkexec /usr/bin/gedit
или когда я запускаю скрипт python для запуска графического приложения с правами root, я получаю следующую ошибку:
>>>subprocess.Popen(['pkexec','gedit'])
** (gedit:3203): WARNING **: Could not open X display
Как бы мне пришлось переписать мои сценарии или мои файлы .desktop для поддержки диалога аутентификации и запустить приложение от имени пользователя root, если у меня не будет этого зависеть от gksu?
sudo
я видел, говорилось об интеграции поддержки gksu в sudo. Еще одна вещь, наsudo -A
которую стоит обратить внимание, это то, что согласно man-странице запускается (возможно) графический логин.Ответы:
Сначала создайте
.policy
файл действий в/usr/share/polkit-1/actions/
. Обычно файлы действий называются «иерархически», например,com.ubuntu.pkexec.gparted.policy
илиorg.debian.apt.policy
Затем вставьте следующий контент:
Замените
[Short/Full Program Name/Path]
на соответствующие значения, напримерgedit
,gedit Text Editor
и/usr/bin/gedit
.<action id>
Значение не обязательно должно соответствовать выбранному имени файла (и один файл может содержать несколько действий), но условно имя файла является префиксом для всех его действий.После сохранения файла определенная программа будет работать с X и GUI и так далее.
Еще одно исправление: добавьте следующую строку в /etc/pam.d/polkit-1:
источник
Еще одно исправление для пользовательских сценариев: определите соответствующие переменные среды внутри вашего сценария.
Вы можете использовать фрагмент, подобный следующему, чтобы сделать это:
(на основе
getXuser
функции ACPI )Если ваш
.desktop
файл все еще не работает, вы можете попробовать обернуть егоpkexec commandline
воsh
фрагмент, например:Последняя проблема - известная ошибка, по-видимому:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690339
https://bugzilla.xfce.org/show_bug.cgi?id=9373
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=650038
https://bugzilla.gnome.org/show_bug.cgi?id=686059
источник