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


13

AndroxydeのFlashtool用の.desktopファイル(Sony Xperiaデバイス用のユーティリティで、フォルダ内の実行可能ファイルで開く必要があります)を作成しました。以前はで動作させていましたがgksu、Ubuntu 15.04 を使用していますが、gksuは古くなっています。

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

Exec=gksu /home/natasha/FlashTool/FlashTool
Exec=pkexec /home/natasha/FlashTool/FlashTool
次に、pkexecがX11アプリケーションの実行を許可しないことについて読んだので、この方法でオーバーライドします。

ここに画像の説明を入力してください

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

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

ここに画像の説明を入力してください

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


pkexecは仕事にポリシーファイルを必要とする、あなたは1を作成する必要があり、ここではいくつかの情報- freedesktop.org/software/polkit/docs/0.105/pkexec.1.htmlまたは使用行なわ方法を確認するには、既存のもの、 -の/ usr /シェア/ polkit-1 / actions。ポリシーは、あなたが「を開くことができません表示」エラーを取得した場合、その後のような回避策があり、時にはより良いアプリの一部は、(。問題なしすなわち作業)をインストールするときにオフされることに注意してくださいますかubuntuforums.org/...を
ダグ

回答:


9

に新しいファイルを作成します /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" "$@"

できます!変更した唯一のExecコマンドはコマンドですExec=pkexec /home/natasha/FlashTool/FlashTool。flashtool-pkexecは.desktopファイルでは動作しないため、以前のように書き ました。ポリシーファイルのおかげで、魔法のように機能します。ありがとうございました!
nplezka

@nplezka .desktopファイルからシェルスクリプトを実行するには、たとえであっても#!Execコマンドの前にを付ける必要があります/bin/sh
TheSola10

0

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

Exec=sudo -H /home/natasha/FlashTool/FlashTool

desktopファイル?
AB

@ABはい、なぜですか?
コス

@AB任意のshインスタンスで実行するのと同じです(一部の環境変数はアドホックに設定されている可能性がありますが、ここでは問題ありません)。
コス

ランチャーに行があるsudo場合(OPがここにあるように)、パスワードを要求してアプリケーションを起動するとは思わない。しかし、おそらくそれは代わりに動作するでしょう。Terminal=false.desktopTerminal=true
ポンスキー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.