15 votes

Quelle option dois-je donner à la commande sudo pour que le mot de passe soit demandé via une interface graphique ?

Ce problème me préoccupe depuis un certain temps déjà.

De temps en temps, j'ai besoin d'écrire un fichier script qui doit exécuter sudo des commandes. Je ne sais pas nécessairement à l'avance que je vais m'exécuter en tant que sudo Je suis donc sûr qu'il existe un moyen d'ouvrir une interface graphique agréable (comme celle qui apparaît lors de l'installation d'un logiciel), mais comment ?

Le site man sudo dit :

-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

Donc je suis presque sûr que la solution réside dans ce -A y SUDO_ASKPASS tuple mais j'ai réussi à trouver ce qu'il faut y mettre.

22voto

Gordon Davisson Points 30215

OS X ne dispose pas d'un moyen entièrement propre de le faire, mais il existe quelques moyens de le simuler. Tout d'abord, AppleScript dispose d'un bon moyen de faire des choses sudo basées sur une authentification graphique, et vous pouvez l'utiliser :

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

Vous pouvez également utiliser ce mécanisme pour définir l'horodatage sudo, et ensuite utiliser le sudo normal (dans la fenêtre de 5 minutes) pour faire des choses :

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

Enfin, vous pouvez utiliser AppleScript pour demander un mot de passe, puis le transmettre à 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

0voto

boretom Points 721

OS X n'est pas livré avec un frontal graphique pour sudo mais vous trouverez cocoasudo o macsudo utile.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X