私は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パスワードプロンプトを見つけることができます:
利用可能な他の同様のプログラムがあります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
仕組みは次のとおりです。
メモ:
また、使用することができます
gksudo
sudo
(su と sudo 用の GTK+ フロントエンド) GUI プロンプトを使用して尋ねるスクリプトの代わりに (2019~2020 年には廃止され、廃止gksu
) :gksudo
また、使用することができます
pkexec
(ポルキットアプリケーション)および一部(構成が必要な他のアプリケーション用)アプリケーション/コマンド: