スクリプトでsudoを使用するときにGUIプロンプトを介してパスワードをどのように要求しますか?

スクリプトでsudoを使用するときにGUIプロンプトを介してパスワードをどのように要求しますか?

私はTrisquel GNU / LinuxとGNOME Flashbackデスクトップ環境を使用しています。ユーザーがsudoスクリプトからコマンドを実行するには、GUIパスワードプロンプトが必要です。たとえば、次のスクリプトを考えます。

zenity --question --text="Do you want to install this package?"
if [[ $? -eq 0 ]]; then sudo apt-get install package
else zenity --warning
fi

つまり、端末内ではなく次のように実行されます。

スクリーンショット

したがって、コマンドを実行するにはパスワードを要求する必要があります。sudoそれ以外の場合、操作は完了しません。

それでは、GUIプロンプトでパスワードをどのように要求しますか?

ベストアンサー1

GUIプロンプトの助けを借りてパスワードを要求することができます-A, --askpassオプションsudo

sudoマンページから:

-A, --askpass
                 Normally, if sudo requires a password, it will read it from the user's terminal.  If the -A
                 (askpass) option is specified, a (possibly graphical) helper program is executed to read the user's
                 password and output the password to the standard output.  If the SUDO_ASKPASS environment variable
                 is set, it specifies the path to the helper program.  Otherwise, if sudo.conf(5) contains a line
                 specifying the askpass program, that value will be used.  For example:

                     # Path to askpass helper program
                     Path askpass /usr/X11R6/bin/ssh-askpass

                 If no askpass program is available, sudo will exit with an error.

ssh-askpassしたがって、次のグラフィックヘルパーを使用できます。ユーザーにパスワードの入力を求めるメッセージを表示するGNOMEの使用:

$ which ssh-askpass
/usr/bin/ssh-askpass

したがって、次の行を追加してください/etc/sudo.conf

# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass

GUIパスワードプロンプトを見つけることができます:

スクリーンショット1

利用可能な他の同様のプログラムがありますzenity。私は次の例を使用します。

$ cat /etc/sudo.conf
# Path to askpass helper program
Path askpass /usr/local/bin/zenity_passphrase

zenity_passphraseカスタムスクリプトはどこにありますか?置くコマンドとして直接使用されます。

$ cat $(which zenity_passphrase)
#!/bin/bash
zenity --password --title="sudo password prompt" --timeout=10

仕組みは次のとおりです。

スクリーンショット2


メモ:

  • また、使用することができますgksudosudo(su と sudo 用の GTK+ フロントエンド) GUI プロンプトを使用して尋ねるスクリプトの代わりに (2019~2020 年には廃止され、廃止gksu) :gksudo

    スクリーンショット3

  • また、使用することができますpkexecポルキットアプリケーション)および一部(構成が必要な他のアプリケーション用)アプリケーション/コマンド:

    スクリーンショット

おすすめ記事