Як налаштувати, pkexec
щоб уникнути помилок під час запуску програм GUI?
Я знайшов два можливі способи:
Як бачите, використовуючи наступне:
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.
Джерело: Polkit - структура
Чи є програма GUI для налаштування pkexec
використання?
З того, що я знаю, дотепер (18.01.2014) не існує подібного. Якщо в майбутньому я щось знайду, я не забуду також оновити цю відповідь.