Você pode pedir a senha por meio do prompt da GUI com a ajuda de -A, --askpass
.
Na página de manual:
-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.
Portanto, você pode programar um programa auxiliar gráfico, como o ssh-askpass
que solicita ao usuário uma frase secreta usando o GNOME:
$ which ssh-askpass
/usr/bin/ssh-askpass
Portanto, adicione a seguinte linha a /etc/sudo.conf
:
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
E você encontrará um prompt de senha da GUI:
Você também pode usar outro programa como zenity
esse. Exemplo que eu uso o seguinte:
$ cat /etc/sudo.conf
# Path to askpass helper program
Path askpass /usr/local/bin/zenity_passphrase
Onde zenity_passphrase
está um conjunto de scripts customizados para ser usado diretamente como comando:
$ cat $(which zenity_passphrase)
#!/bin/bash
zenity --password --title="sudo password prompt" --timeout=10
O que funciona como:
Nota:
Você também pode usar gksudo
(GTK + frontend para su e sudo) em vez de sudo
no script que pergunta com o prompt da GUI:
Você também pode usar pkexec
( aplicativo polkit ) com alguns aplicativos / comandos (para outros, ele precisa ser configurado):
pkexec leafpad
, ele forneceCannot open display:
depois de digitar a senha. Existe alguma configuração adicional necessária?DISPLAY=:0 pkexec leafpad
Cannot open display:
aparece #