What option should I give the sudo command to have the password asked through a graphical interface?
This problem has ben bugging me for a while now.
Every now and then, I need to write a script file that should execute sudo
commands. I do not necessarily know in advance that I will run as sudo
so I am sure there is a way to open a nice graphical interface (such as the one popping up when installing software) but how ?
The man sudo
says:
-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
So I am pretty sure the solution resides in that -A
and SUDO_ASKPASS
tuple however I've managed to find what to put into those.
Solution 1:
OS X doesn't have an entirely clean way to do this, but there are a few ways to fake it. First, AppleScript has a good way to do sudo-ish things based on a graphical authentication, and you can use that:
osascript -e "do shell script \"stufftorunasroot\" with administrator privileges"
You can also use that mechanism to set the sudo timestamp, and then use the regular sudo (within the 5-minute timeout window) to do things:
osascript -e "do shell script \"mkdir -p /var/db/sudo/$USER; touch /var/db/sudo/$USER\" with administrator privileges" && \
sudo stufftorunasroot
Finally, you can use AppleScript to prompt for a password, then pass that to 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