Замените gksudo на pkexec, используя отдельное сообщение

Мой графический интерфейс запустится как пользователь. В программе есть update-механизм, который вызывает враппер-скрипт с рут правами. Для этого я использовал gksudo, пока не понял, что он заменен на pkexec.

Если я просто заменил gksudo на pkexec, все работает нормально. Но я хочу иметь собственное сообщение для пользователя. Поэтому мне нужно изменить или сгенерировать файл xml-policy в /usr/share/polkit-1/actions.

Моя проблема в том, что когда я звоню

pkexec <my-program>

Я получу это приглашение, которое ссылается в Details-->Action на org.freedesktop.policykit.exec.

введите здесь описание изображения

Должен ли я поместить идентификатор действия в этот xml-файл (org.freedesktop.policykit.exec) или мне нужно создать свой собственный файл .policy с именем com.myStuff.updater.policy в /usr/share/polkit-1/actions?

  <vendor>myStuff</vendor>
  <vendor_url>http://myStuff.com</vendor_url>
  <icon_name>myStuff</icon_name>

  <action id="com.myStuff.updater">
    <description>My description</description>
    <message>My message</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_self_keep</allow_active>
    </defaults>
    <annotate key="com.myStuff.updater.exec.path">/my/path/to/wrapper.sh</annotate>
    <annotate key="com.myStuff.updater.exec.allow_gui">true</annotate>
  </action>

Или мне следует вызывать все мое приложение в файле .desktop с помощью pkexec?


person imizeropt    schedule 24.02.2014    source источник


Ответы (1)


Я настоятельно рекомендую создать свой собственный файл .policy и оставить org.freedesktop.policykit.exec в покое по нескольким причинам:

  • pkexec не работает должным образом при определенных обстоятельствах, в терминале, в файлах .desktop и т. д. На самом деле это ошибка Gnome, связанная с двойным форком.

  • С вашим собственным файлом .policy вы редактируете его по своему усмотрению и даже настраиваете его для беспарольных привилегий суперпользователя для своего скрипта! И это очень интересная функция!

  • Вы можете вызвать свой скрипт, просто используя его имя, как и любую другую команду, не нужно добавлять перед ним pkexec или sudo или что-то еще, чтобы он работал где угодно.

Вы можете использовать файл политики gparted в качестве шаблона.

person MestreLion    schedule 17.06.2014