Quale opzione devo dare al comando sudo per richiedere la password tramite un'interfaccia grafica?


11

Questo problema mi sta tormentando da un po 'di tempo ormai.

Ogni tanto ho bisogno di scrivere un file di script che dovrebbe eseguire i sudocomandi. Non so necessariamente in anticipo che eseguirò, sudoquindi sono sicuro che c'è un modo per aprire una bella interfaccia grafica (come quella che appare quando si installa il software) ma come?

La 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

Quindi sono abbastanza sicuro che la soluzione risieda in quello -Ae SUDO_ASKPASStuplo comunque sono riuscito a trovare cosa mettere in quelli.


1
In Linux questi sarebbero gestiti da front-end come gtksudoo kdesudo. Non so cosa ci sia dal lato OS-X delle cose, ma suppongo che tu stia cercando qualcosa in questo senso.
Caleb,

Risposte:


17

OS X non ha un modo completamente pulito per farlo, ma ci sono alcuni modi per simularlo. Innanzitutto, AppleScript ha un buon modo per fare cose sudo-ish basate su un'autenticazione grafica e puoi usarlo:

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

Puoi anche usare quel meccanismo per impostare il timestamp sudo e quindi usare il normale sudo (nella finestra di timeout di 5 minuti) per fare le cose:

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

Infine, puoi utilizzare AppleScript per richiedere una password, quindi passala 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

ho aspettato così tanto tempo per ringraziarvi per questo fantastico suggerimento
apouche il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.