web-dev-qa-db-ja.com

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

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

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

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

これを回避する方法はありますか?むしろ、setuidスクリプトの手間を処理する必要はありません。

12
Chinmay Kanchi

"Ubuntuでは、GUIからSudoへの呼び出しがpkexec"によってインターセプトされているようです。 pkexecSudoとほとんど共通点がありません。 Sudoとは対照的に、pkexecはプロセス全体にルート権限を付与するのではなく、集中システムポリシーをより細かく制御できます。

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

gparted authenticate

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

gparted authenticate - details

ここからは、たとえば次のコマンドを使用して/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を開くと、パスワードの入力を求められなくなります。

14
Radu Rădeanu