Que opção devo dar ao comando sudo para que a senha seja solicitada através de uma interface gráfica?


11

Esse problema já me incomoda há um tempo.

De vez em quando, preciso escrever um arquivo de script que deve executar sudocomandos. Não necessariamente sei antecipadamente que executarei, pois sudotenho certeza de que há uma maneira de abrir uma interface gráfica agradável (como a que aparece ao instalar o software), mas como?

O man sudodiz:

-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

Portanto, tenho certeza de que a solução reside nisso -Ae SUDO_ASKPASStupla, no entanto, consegui encontrar o que colocar neles.


1
No Linux, isso seria tratado por front-ends como gtksudoou kdesudo. Não sei o que há no lado do OS-X, mas presumo que você esteja procurando algo nesse sentido.
Caleb

Respostas:


17

O OS X não tem uma maneira totalmente limpa de fazer isso, mas existem algumas maneiras de falsificá-lo. Primeiro, o AppleScript tem uma boa maneira de fazer coisas sudo-ish com base em uma autenticação gráfica, e você pode usar isso:

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

Você também pode usar esse mecanismo para definir o carimbo de data / hora do sudo e, em seguida, usar o sudo regular (dentro da janela de tempo limite de 5 minutos) para fazer o seguinte:

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

Por fim, você pode usar o AppleScript para solicitar uma senha e passar para o 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

esperou por tanto tempo para ter essa obrigado por esta grande dica
apouche

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.