web-dev-qa-db-ja.com

.desktopファイルのpkexecコマンド

アンドロキシデのFlashtool用の.desktopファイルを作成しました(Sony Xperiaデバイス用のユーティリティで、フォルダ内の実行可能ファイルで開く必要があります)。これには、fastbootユーティリティを使用するためのルート権限が必要です。以前はgksuで動作させていましたが、Ubuntu 15.04を使用していますが、gksuは古くなっています。

からexec行を変更しようとしました

Exec=gksu /home/natasha/FlashTool/FlashTool
Exec=pkexec /home/natasha/FlashTool/FlashTool

enter image description here

Imgur.comの完全な画像へのリンク

問題は、パスワードの入力を求められますが、FlashtoolのGUIが起動しないことです。しかし、端末でそのコマンドを実行すると、プログラムは問題なく起動します。私に何ができる?

enter image description here

Imgur.comの完全な画像へのリンク

11
nplezka

/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
A.B.

Sudo -Hは、実行環境のホームディレクトリをルートのホームディレクトリに設定するため、グラフィカルアプリケーションを起動して~/のユーザーの構成ファイルへの変更を防ぐのに十分です。

Exec=Sudo -H /home/natasha/FlashTool/FlashTool
0
kos