스크립트에서 sudo를 사용하는 동안 GUI 프롬프트로 비밀번호를 요청하는 방법은 무엇입니까?


14

GNOME Flashback Desktop Environment와 함께 Trisquel GNU / Linux를 사용합니다. sudo스크립트에서 with 명령을 실행하려면 사용자에게 GUI 비밀번호 프롬프트가 필요합니다 . 예를 들어 다음 스크립트를 고려하십시오.

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

다음과 같이 (Run) 실행됩니다. 즉 터미널 내부가 아닙니다.

스크린 샷

따라서 명령을 실행하려면 암호를 요구 sudo해야합니다. 그렇지 않으면 작업을 수행 할 수 없습니다.

따라서 GUI 프롬프트로 비밀번호를 요청하는 방법은 무엇입니까?

답변:


19

의 도움으로 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대신 (GTK + 프런트 엔드 su 및 sudo)를 사용할 수도 있습니다 sudo.

    스크린 샷 3

  • 일부 응용 프로그램 / 명령과 함께 pkexec( polkit 응용 프로그램)을 사용할 수도 있습니다 ( 다른 응용 프로그램의 경우).

    스크린 샷


예를 들어 pkexec를 사용 하면 암호를 입력 한 후 pkexec leafpad제공 Cannot open display:됩니다. 추가 구성이 필요합니까?
GTRONICK

시도DISPLAY=:0 pkexec leafpad
Pandya

그럼에도 불구하고, 동일한 메시지 작동하지 Cannot open display:나타납니다
GTRONICK
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.