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

11

Este problema hace que Ben me esté molestando por un tiempo.

De vez en cuando, necesito escribir un archivo de script que deba ejecutar los comandos sudo . No necesariamente sé de antemano que funcionará como sudo , así 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 sudo dice:

-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 esa tupla -A y SUDO_ASKPASS , sin embargo, he logrado encontrar qué poner en esas.

    
pregunta apouche 29.08.2011 - 15:21

2 respuestas

17

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

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

También puedes usar ese mecanismo para establecer 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, puedes 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
    
respondido por el Gordon Davisson 29.08.2011 - 18:07
0

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

    
respondido por el boretom 29.08.2011 - 15:39

Lea otras preguntas en las etiquetas