Автор Тема: Запуск программ с использованием pkexec  (Прочитано 18211 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4635
Запуск программ с использованием pkexec


В Runtu Gnome 12.04 программа Synaptic запускается командой
pkexec /usr/sbin/synaptic

Захотелось разобраться как это работает.

В man pkexec написано, что pkexec предназначена для выполнения команды от имени другого пользователя.
Внизу руководства был рекомендован man polkit, посмотрел и в нем информацию.

Что понял:
В системе должен быть установлен пакет policykit-1-gnome, он имеется.
Для выполнения команды с помощью pkexec, нужно создать для нее правило в /usr/share/polkit-1/actions/
Например для Synaptic:   /usr/share/polkit-1/actions/com.ubuntu.pkexec.synaptic.policy

<?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.synaptic">
    <message>Authentication is required to run the Synaptic Package Manager</message>
    <icon_name>synaptic</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/sbin/synaptic</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>

Сначала идет стандартная шапка.
В теге <policyconfig></policyconfig> уже прописаны правила для запуска Synaptic через pkexec.
id - идентификатор процесса
message - сообщение в всплывающем окне при запуске
icon_name - название иконки, которая будет отображена в всплывающем окне при запуске
В теге <defaults></defaults> указано как выполнять команду (с паролем, без пароля, или запретить запуск)
allow_any - для прочих
allow_inactive - для неактивной сессии
allow_active - для активной сессии, то есть для текущего пользователя
auth_admin - каждый раз при запуске спрашивать пароль
annotate key="org.freedesktop.policykit.exec.path" - путь к исполняемому файлу
annotate key="org.freedesktop.policykit.exec.allow_gui" - запуск в графическом режиме

Для пробы создал правило для nautilus
<?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.nautilus">
    <message>Authentication is required to run the Nautilus</message>
    <message xml:lang="ru">Авторизация выполняется для запуска Nautilus</message>
    <icon_name>nautilus</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/nautilus</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>

</policyconfig>


Выложил эту информацию,так как считаю что пригодится.
« Последнее редактирование: Июнь 03, 2013, 00:50:22 от Пользователь. »

Оффлайн ek-nfn

  • Местный
  • *****
  • Сообщений: 1422
Re: Запуск программ с использованием pkexec
« Ответ #1 : Октябрь 29, 2017, 17:02:45 »
Правила из данного каталога затираются (у меня так) при обновлении утилиты (synaptic  в данном случае).
Для незатираемых пользовательских правил рекомендуют использовать каталог /etc/polkit-1
Но переход PolicyKit на JavaScript  с версии  0.106 вносит такой хаос в интернетовские советы по настройке пользовательских правил, что так и остается непонятным как настраивать это в клонах Ubuntu (Ubuntu c Debian так и продолжают сидеть на версии 0.105.)
Devuan ASCII x32..x64