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プロンプトでパスワードを尋ねるにはどうすればよいですか?
-A, --askpass
を使用してGUIプロンプトでパスワードを要求できます。
マンページから:
-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.
したがって、GNOMEを使用してssh-askpass
などのグラフィカルヘルパープログラムがユーザーにパスフレーズを要求することができます。
$ 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
はカスタムスクリプト set であり、コマンドとして直接使用されます。
$ cat $(which zenity_passphrase)
#!/bin/bash
zenity --password --title="Sudo password Prompt" --timeout=10
これは次のように機能します:
注意:
gksudo
の代わりにSudo
(suとSudoのGTK +フロントエンド)を使用することもできます。 GUIプロンプト:
pkexec
( polkit application)を一部で使用することもできます(他の場合は設定する必要があります)アプリケーション/コマンド: