Как настроить, pkexec
чтобы избежать ошибок при запуске приложений с графическим интерфейсом?
Я нашел два возможных пути:
Как видите, используя следующее:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
не получит никакой ошибки. И это нормально, потому что man pkexec
очень ясно в этом вопросе:
[...] pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.[...]
В результате вы можете создать ( постоянный ) псевдоним (это самый простой способ):
alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
Или (опять же) как man pkexec
говорится:
[...] These two variables will be retained if the
org.freedesktop.policykit.exec.allow_gui annotation on an action is set
to a nonempty value; this is discouraged, though, and should only be
used for legacy programs.[...]
Вы можете создать новый файл политики с /usr/share/polkit-1/actions
именем com.ubuntu.pkexec.gedit.policy
с помощью следующего XML-кода внутри, где самое важное - установить org.freedesktop.policykit.exec.allow_gui
непустое значение:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<action id="com.ubuntu.pkexec.gedit">
<message gettext-domain="gparted">Authentication is required to run gedit</message>
<icon_name>gedit</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate>
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
</action>
</policyconfig>
Как сказать, чтобы он не запрашивал пароль после первого применения к команде?
Для этих трех настроек тегов: allow_any
, allow_inactive
и allow_active
из файла политики, следующие варианты:
- нет : пользователь не авторизован для выполнения действия. Поэтому нет необходимости в аутентификации.
- да : пользователь имеет право выполнять действие без какой-либо аутентификации.
- auth_self : требуется аутентификация, но пользователь не обязательно должен быть администратором.
- auth_admin : требуется аутентификация пользователя с правами администратора.
- auth_self_keep : так же, как auth_self, но
sudo
авторизация длится несколько минут.
- auth_admin_keep : так же, как auth_admin, но
sudo
авторизация длится несколько минут.
Источник: Polkit - Структура - Действия
Таким образом, если вы используете опцию auth_admin_keep (или, в зависимости от обстоятельств, auth_self_keep ), pkexec
не будет запрашивать пароль снова некоторое время (по умолчанию это время равно 5 минутам, как я проверял). Недостатком здесь является то, что эта вещь применима только для одной и той же команды / приложения и действительна для всех пользователей (если только она не отменяется в более поздней конфигурации).
Где сохранить файл конфигурации, если он еще не существует?
Файлы конфигурации или определения polkit можно разделить на два вида:
Действия определены в XML .policy файлах, расположенных в /usr/share/polkit-1/actions
. К каждому действию прикреплен набор разрешений по умолчанию (например, вам нужно указать в качестве администратора, чтобы использовать действие GParted). Значения по умолчанию могут быть отменены, но редактирование файлов действий НЕ является правильным способом. Имя этого файла политики должно иметь следующий формат:
com.ubuntu.pkexec.app_name.policy
Правила авторизации определены в файлах JavaScript .rules. Они находятся в двух местах: сторонние пакеты могут использовать /usr/share/polkit-1/rules.d
(хотя некоторые, если таковые имеются) и /etc/polkit-1/rules.d
предназначен для локальной конфигурации. Файлы .rules обозначают подмножество пользователей, ссылаются на одно (или несколько) действий, указанных в файлах действий, и определяют, с какими ограничениями эти действия могут быть предприняты этим / этими пользователями. Например, файл правил может отменять требование по умолчанию для всех пользователей для аутентификации в качестве администратора при использовании GParted, определяя, что некоторым конкретным пользователям это не нужно. Или не разрешено использовать GParted вообще.
Источник: Полкит - Структура
Есть ли приложение с графическим интерфейсом для настройки pkexec
использования?
Из того, что я знаю, до сих пор (18.01.2014) не существует чего-то подобного. Если в будущем я что-то найду, я тоже не забуду обновить этот ответ.