저는 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
따라서 다음과 같은 그래픽 도우미를 사용할 수 있습니다.사용자에게 비밀번호를 묻는 메시지 표시그놈 사용:
$ 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
(폴킷애플리케이션) 및 일부(구성이 필요한 기타 애플리케이션용) 애플리케이션/명령: