Oracle Linux 8インストールでは、(グラフィックス)プログラムが別の(rootではない)ユーザーとして実行されるGNOMEシェル用のデスクトップランチャーを実装しようとしています。でもパスワード確認を施行したいです。対象ユーザーとしてgksu
つまり、モードと同様の動作です-w
。
これは、承認されたオペレータがターゲットユーザーのパスワードを知って機能にアクセスするための便利な方法を提供しますが、承認されていないオペレータは起動されたプログラムを使用できないようにします。(1)
私はこれがpkexec
現在他のユーザーとしてプログラムを起動するのに推奨される方法であることを知っています。別のオプションbeesu
、Oracle 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>
- 私は
AdminRule
inを定義して宣言/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) この設定では、オペレータは個人ユーザーアカウントを使用できませんが、代わりに権限レベルの異なる一般的なローカルユーザーアカウントを使用することに注意してください。その権限を必要とする人には、特定のユーザーアカウントのパスワードが与えられます。これは私が制御できないデザインの決定です。