pkexec управляют в .desktop файле

Я сделал .desktop файл для Flashtool Androxyde (утилита для устройств Xperia Sony, которые я должен открыть с исполняемым файлом в его папке), который требует полномочий пользователя root использовать fastboot утилиты. Я раньше заставлял его работать с gksu, но я нахожусь на Ubuntu 15.04, и gksu теперь стар.

Я пытался изменить exec строка от

Exec=gksu /home/natasha/FlashTool/FlashTool
кому:
Exec=pkexec /home/natasha/FlashTool/FlashTool
Затем я читал о pkexec, не позволяет запускать приложения X11 и таким образом, я переопределяю таким образом:

enter image description here

Свяжитесь с полным образом на Imgur.com

Проблема теперь: Это спрашивает меня пароль, но GUI Flashtool не запускается. НО если я выполняю ту команду в терминале, программа запускается без проблем. Что я могу сделать?

enter image description here

Свяжитесь с полным образом на Imgur.com

12
задан 27 June 2015 в 06:26

2 ответа

Создайте новый файл в /usr/share/polkit-1/actions/

sudo nano /usr/share/polkit-1/actions/FlashTool.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="org.freedesktop.policykit.pkexec.run-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/home/natasha/FlashTool/FlashTool</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>
<час>

Тогда создают новый файл /home/natasha/FlashTool/

nano /home/natasha/FlashTool/flashtool-pkexec

и добавляют строки ниже:

#!/bin/sh
pkexec "/home/natasha/FlashTool/FlashTool" "$@"
<час>

Использование строка ниже для Exec в Вашем desktop файл:

Exec=/home/natasha/FlashTool/flashtool-pkexec
<час>

Протестированный в моей системе Ubuntu 15.04 GNOME со следующими файлами:

<час>
$ cat /usr/share/applications/gedit.root.desktop 
[Desktop Entry]
Name=Gedit as root
GenericName=Text Editor
X-GNOME-FullName=
Comment=
Exec=gedit-pkexec
Icon=gedit
Terminal=false
Type=Application
Categories=GNOME;System;Filesystem;Settings;
StartupNotify=true
X-Ubuntu-Gettext-Domain=gedit

$ cat /usr/share/polkit-1/actions/gedit.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="org.freedesktop.policykit.pkexec.run-FlashTool">
    <description>Run FlashTool</description>
    <message>Authentication is required to run FlashTool</message>
    <defaults>
      <allow_any>no</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</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>

$ cat /usr/bin/gedit-pkexec 
#!/bin/sh
pkexec "gedit" "$@"
8
ответ дан 23 November 2019 в 03:44

sudo -H достаточно для запуска графического приложения, предотвращающего изменения в конфигурационных файлах пользователя в ~/, так как оно устанавливает корневой каталог рабочей среды на корневой каталог корня:

Exec=sudo -H /home/natasha/FlashTool/FlashTool
0
ответ дан 23 November 2019 в 03:44

Другие вопросы по тегам:

Похожие вопросы: