Opsi apa yang harus saya berikan pada perintah sudo agar kata sandi ditanyakan melalui antarmuka grafis?

11

Masalah ini telah mengganggu saya untuk sementara waktu sekarang.

Sesekali, saya perlu menulis file skrip yang harus menjalankan sudoperintah. Saya belum tentu tahu sebelumnya bahwa saya akan berjalan karena sudosaya yakin ada cara untuk membuka antarmuka grafis yang bagus (seperti yang muncul saat menginstal perangkat lunak) tetapi bagaimana caranya?

The man sudomengatakan:

-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

Jadi saya cukup yakin solusinya berada di dalamnya -Adan SUDO_ASKPASStuple namun saya telah berhasil menemukan apa yang harus dimasukkan ke dalamnya.

apouche
sumber
1
Di Linux ini akan ditangani oleh front-end seperti gtksudoatau kdesudo. Saya tidak tahu apa yang ada di sisi OS-X, tapi saya berasumsi Anda mencari sesuatu di sepanjang garis itu.
Caleb

Jawaban:

17

OS X tidak memiliki cara yang sepenuhnya bersih untuk melakukan ini, tetapi ada beberapa cara untuk memalsukannya. Pertama, AppleScript memiliki cara yang baik untuk melakukan hal-hal sudo-ish berdasarkan otentikasi grafis, dan Anda dapat menggunakannya:

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

Anda juga dapat menggunakan mekanisme itu untuk mengatur stempel waktu sudo, dan kemudian menggunakan sudo reguler (dalam jendela batas waktu 5 menit) untuk melakukan hal-hal:

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

Terakhir, Anda dapat menggunakan AppleScript untuk meminta kata sandi, lalu meneruskannya ke 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
Gordon Davisson
sumber
menunggu begitu lama untuk mengucapkan terima kasih atas tip yang luar biasa ini
apouche
0

OS X tidak dilengkapi dengan front-end grafis untuk sudo tetapi Anda akan menemukan cocoasudo atau macsudo bermanfaat.

boretom
sumber