Я использую Trisquel GNU / Linux-Libre, который поставляется с Gnome3 Flashback Desktop Environment.
Я знаю , что я могу запустить приложение GUI , как корень по sudo
& , gksudo
но я хочу знать , что Как запускать приложения с графическим интерфейсом , как корень с помощью pkexec
?
Когда я пытаюсь запустить gedit
(или любое другое приложение, например nautilus
:), pkexec gedit
тогда он запрашивает пароль для аутентификации: -
После ввода пароля он завершается с ошибкой: -
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Таким образом, кажется, что-то не так с отображением среды.
Я также пытался с, DISPLAY=:0 pkexec gedit
но не работает.
Следующая информация доступна от man pkexec
: -
Среда, в которой PROGRAM будет его запускать, будет установлена на минимально известную и безопасную среду, чтобы избежать внедрения кода через LD_LIBRARY_PATH или аналогичные механизмы. Кроме того, для переменной среды PKEXEC_UID задан идентификатор пользователя процесса, вызывающего pkexec. В результате pkexec не позволит вам запускать приложения X11 от имени другого пользователя, поскольку переменные окружения $ DISPLAY и $ XAUTHORITY не установлены. Эти две переменные будут сохранены, если для примечания org.freedesktop.policykit.exec.allow_gui для действия задано непустое значение; Это не рекомендуется и должно использоваться только для устаревших программ.
Теперь я не знаю, что делать, чтобы этого добиться.
Таким образом, Помогите мне узнать, как запускать приложения с графическим интерфейсом от имени пользователя root pkexec
. Или это возможно или нет?
Кстати, вдохновленный gparted-pkexec
командой, которая работает нормально. Как gparted
использовать pkexec
?
источник
Ответы:
Это можно сделать, добавив пользовательские действия в policykit. Если вы хотите запустить gedit от имени пользователя root,
pkexec
вам нужно создать новый файл,/usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy
например:Наконец-то
pkexec gedit
должно работать как положено.Посетите man-страницу или справочное руководство, которое объясняет это как EXAMPLE, например:
источник
man pkexec
)!