2011-07-20 7 views
1

gksuまたはbeesuジョブを実行するコマンドを検索していますが、policykitに依存しています。gksuの代わりにpolicykit + dbusを使用してグラフィックアプリケーションを実行する

policykitとdbusのマニュアルは何らかの形で非常に複雑で明確ではありません。

私は「pkexec」を見つけたが

pkexec gedit 

結果グラフィカルアプリケーションを実行しようとすると、それはエラーを示しています

(gedit:7243): Gtk-WARNING **: cannot open display: 
+0

私はあなたが答えることを正確に理解していません、あなたは明確にすることができますか? –

+0

linuxでroot権限を持つグラフィカルアプリケーションを実行しています。しかし、gksuコマンドを使用したくないのは、すべてのディストリビューションで動作しないため、ポリシーキットを使用しようとしています。 このコマンド "pkexec test.py"の結果 pkexec geditの結果:(gedit:7243):Gtk-WARNING **:表示を開くことができません: –

答えて

2

XMLに書かれた/usr/share/polkit-1/actionsaction definition fileを作成する必要があります。 /usr/share/polkit-1/actions/com.example.gedit

コピー本:

<?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.example.gedit"> 
    <message gettext-domain="gedit">Authentication is required to run gedit as root</message> 
    <icon_name>accessories-text-editor</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/gedit</annotate> 
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> 
    </action> 

</policyconfig> 

org.freedesktop.policykit.exec.allow_gui = trueはgeditのは、あなたのXorgサーバーに接続できるようになります。自動的にXAUTHORITYDISPLAYが渡されます。

0

グラフィカルプログラムのほとんどは、あなたがそれを実行するために管理する場合でもそうdbusのを必要としますそれは失敗する可能性があります。 gnomeプログラムの場合、少なくとも以下の変数を設定する必要があります。 'SESSION_MANAGER', 'DBUS_SESSION_BUS_ADDRESS', 'DISPLAY', 'GNOME_DESKTOP_SESSION_ID', 'XAUTHORITY'あなたが必要とするkdeプログラムの場合'SESSION_MANAGER', 'DBUS_SESSION_BUS_ADDRESS', 'DISPLAY', 'KDE_FULL_SESSION', 'XAUTHORITY' xkeサーバーに接続できるようにするには、pkexecに少なくともXAUTHORITYとDISPLAYが必要です。

関連する問題