¿Qué opción debo darle al comando sudo para que se solicite la contraseña a través de una interfaz gráfica?

11

Este problema me ha estado molestando por un tiempo.

De vez en cuando, necesito escribir un archivo de script que ejecute sudocomandos. No necesariamente sé de antemano que voy a ejecutar, sudoasí que estoy seguro de que hay una manera de abrir una interfaz gráfica agradable (como la que aparece al instalar el software), pero ¿cómo?

El man sudodice:

-A          Normally, if sudo requires a password, it will read it from the current 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, the value specified by the askpass option in
            sudoers(5) is used

Así que estoy bastante seguro de que la solución reside en eso -Ay SUDO_ASKPASStupla, sin embargo, he logrado encontrar qué poner en eso.

apouche
fuente
1
En Linux, estos serían manejados por front-end como gtksudoo kdesudo. No sé qué hay en el lado de OS-X de las cosas, pero supongo que estás buscando algo en ese sentido.
Caleb

Respuestas:

17

OS X no tiene una forma completamente limpia de hacer esto, pero hay algunas formas de fingirlo. Primero, AppleScript tiene una buena manera de hacer cosas sudo-ish basadas en una autenticación gráfica, y puede usar eso:

osascript -e "do shell script \"stufftorunasroot\" with administrator privileges"

También puede usar ese mecanismo para configurar la marca de tiempo de sudo, y luego usar el sudo regular (dentro de la ventana de tiempo de espera de 5 minutos) para hacer cosas:

osascript -e "do shell script \"mkdir -p /var/db/sudo/$USER; touch /var/db/sudo/$USER\" with administrator privileges" && \
    sudo stufftorunasroot

Finalmente, puede usar AppleScript para solicitar una contraseña, luego pasarla a sudo:

pw="$(osascript -e 'Tell application "System Events" to display dialog "Password:" default answer "" with hidden answer' -e 'text returned of result' 2>/dev/null)" && /
    echo "$pw" | sudo -S stufftorunasroot
Gordon Davisson
fuente
esperado tanto tiempo para tener que gracias a este gran consejo
apouche
0

OS X no viene con una interfaz gráfica para sudo, pero encontrará útil cocoasudo o macsudo .

Boretom
fuente