root以外のユーザーのための「su」モードで「gksu」を置き換える

root以外のユーザーのための「su」モードで「gksu」を置き換える

Oracle Linux 8インストールでは、(グラフィックス)プログラムが別の(rootではない)ユーザーとして実行されるGNOMEシェル用のデスクトップランチャーを実装しようとしています。でもパスワード確認を施行したいです。対象ユーザーとしてgksuつまり、モードと同様の動作です-w

これは、承認されたオペレータがターゲットユーザーのパスワードを知って機能にアクセスするための便利な方法を提供しますが、承認されていないオペレータは起動されたプログラムを使用できないようにします。(1)

私はこれがpkexec現在他のユーザーとしてプログラムを起動するのに推奨される方法であることを知っています。別のオプションbeesuOracle Linux 8では動作しないようです。

ただし、パスワードベースの認証が必要な場合ポルキットのみ許可

  • 呼び出しユーザーのパスワードで認証します(使用auth_self)。または
  • 管理者のパスワードで認証します(使用auth_admin)。

次のターゲットユーザーのパスワードを求めるオプションが見つかりません。

pkexec - ユーザー対象ユーザー/usr/bin/グラフィックプログラム

注文する。

私が試したこと

targetuser私のアプローチはそれを管理者として定義することでした。このシングルユースケースの場合。セクションの設定でtargetuser管理者リストにグローバルに追加したくありません。AdminIdentities[Configuration]ポルキット地方政府。だから、

  • /usr/share/polkit-1/actions/プログラム呼び出しと一致する設定でジョブを定義しました。pkexec
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/graphical_program</annotate>
    
    そして、合格するには管理者ユーザー認証が必要です。
    <defaults>
       <allow_any>no</allow_any>
       <allow_inactive>no</allow_inactive>
       <allow_active>auth_admin</allow_active>
    </defaults>
    
  • 私はAdminRuleinを定義して宣言/usr/share/polkit-1/rules.d/しました。
    polkit.addAdminRule(function(action, subject) {
         if (action.id == "org.my.rule.for.graphical_program") {return ["unix-user:targetuser"];}
         }
    );
    
    targetuser(専用)org.my.rule.for.graphical_programどのユーザーが実際に管理ユーザーであるかを尋ねる場合は、管理ユーザーを返す必要があります。

これで実行するとpkexec --user targetuser /usr/bin/graphical_program、ジョブが正しく一致することがわかりますが(表示されたメッセージはジョブ<message> ... </message>ファイルのノードで設定したものと正確に一致します)、AdminRule適用されないようです。パスワードダイアログがまだ必要です。パスワード - システムログは、ルールが(少なくとも)正しくロードされコンパイルされたことを示しますが、構文の問題ではありません。

この設定がどのように機能するかを知っている人はいますか?ポルキットまたはOracle Linux 8(または同様のRHEL 8派生製品)で使用できる代替グラフィックス認証メカニズムは何ですか?


(1) この設定では、オペレータは個人ユーザーアカウントを使用できませんが、代わりに権限レベルの異なる一般的なローカルユーザーアカウントを使用することに注意してください。その権限を必要とする人には、特定のユーザーアカウントのパスワードが与えられます。これは私が制御できないデザインの決定です。

関連情報