web-dev-qa-db-ja.com

スクリプトで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

これは次の方法で実行されます(実行)、つまりターミナル内ではありません:

screen-shot

したがって、Sudoを使用してコマンドを実行するには、パスワードを要求する必要があります。そうしないと、ジョブを実行できません。

したがって、GUIプロンプトでパスワードを尋ねるにはどうすればよいですか?

13
Pandya

-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パスワードプロンプトを見つけるでしょう:

screen-shot1

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

これは次のように機能します:

screen-shot2


注意:

  • gksudoの代わりにSudo(suとSudoのGTK +フロントエンド)を使用することもできます。 GUIプロンプト:

    screen-shot3

  • pkexecpolkit application)を一部で使用することもできます(他の場合は設定する必要があります)アプリケーション/コマンド:

    screen-shot

18
Pandya