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


13

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プロンプトでパスワードを尋ねるにはどうすればよいですか?

回答:


18

の助けを借りて、GUIプロンプトを使用してパスワードを要求できます-A, --askpass

マンページから:

-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


注意:

  • GUIプロンプトで尋ねるスクリプトのgksudo代わりに(suおよびsudoのGTK +フロントエンド)を使用することもできsudoます。

    スクリーンショット3

  • pkexecpolkitアプリケーション)を一部の(他のユーザーは構成する必要がある)アプリケーション/コマンドで使用することもできます。

    スクリーンショット


pkexecを使用する場合は、例えばpkexec leafpad、それが与えCannot open display:たパスワードを入力した後。追加の構成は必要ですか?
GTRONICK 2017

試してみるDISPLAY=:0 pkexec leafpad
Pandya

それでも機能しない場合、同じメッセージCannot open display:が表示されます
GTRONICK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.