パスワードを要求しないようにpkexecを構成する方法は?


12

スーパーユーザー特権でデーモン(Pythonで作成)を呼び出す必要があるGUIアプリケーションがあります。ユーザーにパスワードを要求することなくこれを実行したいと思います。

デーモンはスクリプトであるため、SUIDビットを直接設定することはできません。このためにCラッパーを書くことはできましたが、特に自分の側の間違いがシステムのセキュリティを著しく損なうことにつながる可能性がある場合は、むしろ車輪を再発明したくないでしょう。

この状況で私が通常行うことは/etc/sudoers、NOPASSWDディレクティブを使用して、ユーザーがパスワードなしでrootとしてデーモンを実行できるようにする行を追加することです。これは、コマンドラインから正常に機能します。ただし、GUIからこれを行うと、pkexecダイアログがポップアップしてユーザーのパスワードを要求します。Ubuntuでは、sudoGUIからの呼び出しが何らかの形でインターセプトされているようpkexecです。

これを回避する方法はありますか?setuidスクリプトの煩わしさを扱う必要はありません。


どのようなアプリケーションについて話しますか?
ラドゥラディアナヌ

任意のGUIアプリ。GUIアプリを実行しようとするsudo somecommandと、表示されるダイアログボックスpkexecは、プログラムの実行を許可するsudoersポリシーがあるかどうかに関係なく、パスワードダイアログです。
チンメイカンチ

回答:


14

:それはと言うことは不適切だ「Ubuntuの上に呼び出しているようですsudoGUIからは、何らかの形で傍受されていますpkexecpkexecとの共通点はあまりありませんsudo。とは対照的にsudopkexecプロセス全体にルート権限を付与するのではなく、集中システムポリシーをより細かく制御できます。

これで、パスワードの入力を求められずにGUIアプリケーションを実行したい場合pkexec、これは難しくありません。たとえばGPartedを見てみましょう。開くと、パスワードの入力を求める次のダイアログウィンドウが表示されます。

認証された

[ 詳細]をクリックすると、ダイアログウィンドウは次のようになります。

gparted認証-詳細

ここからは、たとえば次のコマンドを使用してファイルを開くだけです。/usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy

次の行を変更します。

      <allow_any>auth_admin</allow_any>
      <allow_inactive>auth_admin</allow_inactive>
      <allow_active>auth_admin</allow_active>

次のように:

      <allow_any>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>

ファイルを保存して閉じます。次に、GPartedを開くと、パスワードの入力を求められなくなります。


はい、pkexecは実際にsudoの呼び出しをインターセプトします。この動作の最小限の例を作成できるかどうかを確認します。
チンメイカンチ

単純なアプリでこれを複製することはできません。非常に特定の状況でのみ発生する可能性があり、バグを追跡する時間はありません。私はあなたの答えを受け入れます。乾杯。
チンメイカンチ

@ChinmayKanchiもっとはっきりさせましょう。もう一度例を挙げgpartedます。terminalから実行する場合、root権限でファイルをsudo gparted実行し/usr/sbin/gpartedます。あなたが起動するとgpartedGUIから、あなたは実際には開始gparted-pkexec(あなたはこの内側確認することができます/usr/share/applications/gparted.desktopされているファイル)/usr/bin/gparted-pkexec:それは、その目的は、次のコマンドを実行することで、シェルスクリプトであるpkexec "/usr/sbin/gparted"と等価ですpkexec gparted。だから、とは関係ありませんsudo。そして、このコマンドは、ターミナルではなく、で使用する必要がありますsudo gparted
ラドゥラディアナヌ

1
@ChinmayKanchi sudoは、GUIアプリではなく、シェルアプリにのみ使用してください。参照してくださいman sudoman pkexecこの意味インチ
ラドゥラデアヌ

はい、私はあなたの両方の点を知っています。私の状況は、sudoを使用してシェルプログラム(デーモン、私も作成)を起動しようとするGUIアプリ(私が作成)があることです。何らかの理由で、これを行うと、sudoの代わりにpkexecが呼び出されます。つまり、デーモン用に作成したsudoポリシーは無視されます。
チンメイカンチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.