web-dev-qa-db-ja.com

pkexecはLubuntu / LXDEでpolkit GUIを起動しません

最小限のデスクトップでLubuntu 12.04の新規インストールを実行しました ここで説明したとおり

明確にするために、Lubuntuの代替インストールディスクからコマンドラインインストールを実行し、apt-get install --no-install-recommends lubuntu-desktopを実行しました。

Synapticがパネルのメニューエントリから実行されないことを除いて、すべてが正常に機能しています。パスワードの入力を求められず、メニューエントリをクリックしてもウィンドウが表示されません。ショートカットの実行内容を確認するためにlxshortcutをインストールしましたが、コマンドはsynaptic-pkexecです。このコマンドを「実行」メニューに入力すると、同じ動作(またはその欠如)が発生します。

[実行]メニューでgksudo synapticと入力すると、Synapticを正常に開くことができます。また、ターミナルから「synaptic-pkexec」を実行すると、ターミナル内でパスワードの入力を求められ、その後Synapticが正常に開きます。

誰かがSynapticを動作させるための正しい方法を提案してもらえますか?メニューエントリを「gksudo synaptic」に変更することはできますが、理由はsynaptic-pkexecに設定されていると推測しています。私はこのpkexecビジネスがPolicyKitと関係があることを漠然と理解していますが、PolicyKitが何であるか、または何かが壊れているかどうかをどのように知るかはわかりません。

7
ven42

policykit-1-gnomeパッケージをインストールする必要があることがわかりました。このパッケージをインストールして再起動すると、Synapticは正常に機能しました。

完全なLubuntuデスクトップをVMにインストールして、最小インストールと比較しました。これが、欠落しているものを発見した方法です。パッケージの説明によると:

PolicyKit-gnomeは、特権の取得に使用される認証ダイアログを表示するために使用されるD-Busセッションバスサービスを提供します。

明らかに、説明されている機能がなければ、Synapticを開くためのGUI認証プロンプトが表示されることはありませんでした。

synapticlubuntu-desktopメタパッケージの依存関係であるため、最小インストールではデフォルトでインストールされました。 Synapticはそれなしでは動作しないため、policykit-1-gnomelubuntu-desktopの依存関係であってはなりませんか?バグを報告すべきだと思いますか?

3
ven42

私は受け入れられた答えの代替ソリューションを使用しています。 LXDE用に設計されているため、policykit-1-gnomeではなくlxpolkitを使用することを好みます。

pkexec認証画面を起動しないというこの問題は非常に一般的です。最初に確認することは、グラフィカルポリシーキットインターフェイス(lxpolkitまたはpolicykit-1-gnomeのいずれか)がインストールされ、LXDE用に設定されているかどうかです。これらのパッケージはlubuntuのメジャーアップグレード中に削除フラグが付けられているためです。どうやら、ディストリビューションのインストール時にどちらも含まれていないようです。

解決

  • lxpolkitをインストールします。
    Sudo apt-get install lxpolkit

  • ログアウトとログイン。

  • lxpolkitをデフォルトのポリシーエージェントとして設定します
    メニューで、Preferences > Default applications for LXSessionに移動します(または、ターミナルでlxsession-default-appsを実行します)。最初のセクション「アプリケーションの実行」(更新:デフォルトのアプリマネージャー14.10は異なります。Core applicationsタブを使用します。)、Polkit agentのオプションに移動し、 lxpolkitが選択されていることを確認してください。

パッケージpolicykit-1-gnomeを使用する代わりに、lxsessionはLXDEにlxpolkitを使用するようになりました。

LXPolkit screenshot

アプリがpkexecで起動した理由LXDEメニューから実行しないでください

X11システムのアプリがpkexecで起動される方法に帰着します。

Lxpanelメニューに表示されるアプリは、/usr/share/applications(グローバルメニュー項目)または~/.local/share/applications(ユーザー固有)のいずれかに保存および構成されます。 LXDE Wiki-メインメニュー を参照してください

これらのディレクトリには、メニューに表示される各アプリケーションの.desktopファイルがあります。 /usr/share/applications/synaptic.desktopの例を次に示します。

[Desktop Entry]
Name=Synaptic Package Manager
GenericName=Package Manager
Comment=Install, remove and upgrade software packages
Exec=synaptic-pkexec
Icon=synaptic
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
NotShowIn=KDE;
X-Ubuntu-Gettext-Domain=synaptic

Exec=synaptic-pkexecに注意してください。

ポリシーキットインターフェイスがない場合、ユーザーは通常、コマンドラインでパスワードを要求されます。これはメニュー項目であるため、バックグラウンドで起動され、パスワードを入力するコマンドラインはありません。したがって、lxpolkitを使用していることを確認する必要があります。または、gnome polkitを使用する場合は、pkexecが使用されるたびにログインメニューを起動するパッケージpolicykit-1-gnomeをインストールします。パッケージpolicykit-1-gnomeを削除しました。lxpolkitを使用すると、すべてのアプリケーションでうまく機能します。

代替ソリューション

pkexecの代わりにgksudoを使用
メニューでsynapticなどのアプリケーションを右クリックし、[プロパティ]をクリックして、[コマンド]フィールドをsynaptic-pkexecからgksudo synapticに変更できます。または、コマンドラインで、Sudo cp /usr/share/applications/synaptic.desktop ${HOME}/.local/share/applications/synaptic.desktopを使用して元のファイルをユーザーのアプリケーションディレクトリにコピーします

次に、行Exec=synaptic-pkexecを編集して、Exec=gksudo synapticに置き換えます

gksudoの「主な目的は、X端末エミュレータを実行し、suを直接使用することなく、rootを必要とするグラフィカルコマンドを実行することです。」 - GKSU(1)

そして正当な理由で! Sudoのグラフィカルな実行 を参照してください。

もちろん、これには、pkexecに依存するすべてのアプリケーションを編集してgksudoで起動する必要があり、lxpanelを使用している場合は、より多くの作業が必要になります。 gksudoとPolicyKitのセキュリティ機能とユーザビリティ機能の素晴らしい比較は、 特権認証機能の比較 にあります。

個々のアプリケーションに独自のpkexecポリシーを書く
これは私がやりたいこと以上ですが、状況によっては役に立つかもしれません。 PolicyKit Actionsの記述 を十分に理解せずにこれを行うことはお勧めしません。

Polkitを介して利用できるアクションは、インストールしたパッケージによって異なります。複数のデスクトップ環境で使用されるもの(org.freedesktop。)、DE固有のもの(org.gnome。)、および単一のプログラムに固有のもの(org.archlinux。 pkexec.gparted.policy)。コマンドpkactionは、クイックリファレンスのために/ usr/share/polkit-1/actionsで定義されているすべてのアクションをリストします。

City-busz -'gksu 'の代わりに' pkexec 'コマンドを使用 からの例は、テストしていません。

例えば。ルートとしてgpartedを実行したい場合

$ pkexec gparted

コマンド、次に新しいファイルを作成

/usr/share/polkit-1/actions/org.freedesktop.policykit.pkexec.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-gparted">
    <description>Run GParted</description>
    <message>Authentication is required to run GParted</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/sbin/gparted</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
  </action>

</policyconfig>

同じファイルにさらにアクションを追加できます。

archlinux.orgのrenegat に関連するLXDEおよびPolicyKitのドキュメントからの関連する抜粋をコンパイルして、最終的にLXPolkitを優先ソリューションとして使用するようになったというヒント。

3
iyrin

提案を使用して、[システムツール]の下のメニューのシナプスエントリを右クリックし、[プロパティ]、[デスクトップエントリ]タブの順に選択し、synaptic-pkexecをgksudo synapticに変更します。

それはうまくいきませんでしたので、シナプス(gksudoシナプス)を実行しているターミナル経由で調査しました。

私にとっては、gksudoを使用しようとすると、gksuのインストール方法を示すメッセージが表示されました。インストールしようとすると、gksuがすでにインストールされているというメッセージが表示されました(まだ動作しませんでした)。 gksuをアンインストールして再インストールすると、シナプスは正常に動作します。

0
Scott