Welche Option sollte ich dem Befehl sudo geben, damit das Passwort über eine grafische Oberfläche abgefragt wird?

11

Dieses Problem nervt mich jetzt schon eine Weile.

Hin und wieder muss ich eine Skriptdatei schreiben, die sudoBefehle ausführen soll . Ich weiß nicht unbedingt im Voraus, dass ich so laufen werde, sudodaher bin ich sicher, dass es eine Möglichkeit gibt, eine schöne grafische Oberfläche zu öffnen (wie die, die bei der Installation von Software auftaucht), aber wie?

Der man sudosagt:

-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

Ich bin mir also ziemlich sicher, dass die Lösung darin liegt -Aund SUDO_ASKPASSTupel, aber ich habe es geschafft, herauszufinden, was ich in diese einbauen kann.

Apouche
quelle
1
Unter Linux würden diese von Frontends wie gtksudooder behandelt kdesudo. Ich weiß nicht, was es auf der OS-X-Seite gibt, aber ich gehe davon aus, dass Sie nach etwas in dieser Richtung suchen.
Caleb

Antworten:

17

OS X hat keine völlig saubere Möglichkeit, dies zu tun, aber es gibt einige Möglichkeiten, dies zu fälschen. Erstens hat AppleScript eine gute Möglichkeit, auf der Grundlage einer grafischen Authentifizierung schaumige Dinge zu tun, und Sie können dies verwenden:

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

Sie können diesen Mechanismus auch verwenden, um den Sudo-Zeitstempel festzulegen, und dann den regulären Sudo (innerhalb des 5-Minuten-Timeout-Fensters) verwenden, um folgende Aktionen auszuführen:

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

Schließlich können Sie AppleScript verwenden, um nach einem Kennwort zu fragen, und dieses dann an sudo übergeben:

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
quelle
Ich habe
0

OS X enthält kein grafisches Frontend für sudo, aber Sie finden Cocoasudo oder Macsudo hilfreich.

Boretom
quelle