Wie funktioniert das sudo-Schlüsselsymbol?

Ich versuche, ein Skript zu schreiben, das das Benutzerkennwort für einige sudo-bezogene Befehle anfordert. Mein Ziel ist es, die Standardmethode zu emulieren, die OS X verwendet, um das Passwort des Benutzers zu erhalten, Password:gefolgt von einem schlüsselähnlichen Symbol, wie im unten angehängten Screenshot zu sehen ist:

Schlüsselsymbol

Ich habe versucht, die Antwort von How to get a password from a shell script without echoing over on Stack Overflow zu verwenden read -s, aber das führt dazu, dass Password:das Schlüsselsymbol nicht angezeigt wird, wenn es von einem Skript ausgeführt wird, aber das Symbol angezeigt wird, wenn es vom Terminal selbst ausgeführt wird. Was ist dieses Schlüsselsymbol und kann ich es im Zeichenmenü finden?

Ich erhalte das Schlüsselsymbol, wenn read -sich im Terminal ausgeführt werde, also gehe ich davon aus, dass dies tatsächlich eine Funktion von bash ist. Vielleicht gibt ein Blick in den Quellcode ( opensource.apple.com/source/bash/bash-99/bash-3.2/builtins/… ) weitere Hinweise.
@patrix Ich verstehe, jetzt verstehe ich. Ich habe read -sin meinem Skript nicht richtig eingerichtet. Danke für Ihre Hilfe!
@patrix Bitte fügen Sie eine Antwort hinzu, wenn es Ihnen nichts ausmacht.
Überprüfen. Und es ist wahrscheinlich sogar eine Funktion von Terminal.

Antworten (3)

Ich erhalte das Schlüsselsymbol, wenn ich read -sim Terminal laufe.

Da dies für genauso zu funktionieren scheint read -swie für sudo, nehme ich an, dass dies eine Funktion von Terminal ist (um ein Schlüsselsymbol anzuzeigen, wenn eine Eingabe im stillen/versteckten Modus angefordert wird).

Die einfachste Antwort ist, das Skript einfach ohne sudo zu schreiben

dann sagen Sie dem Benutzer, dass er es mit sudo ausführen soll, zBsudo script

Das Skript wird mit Root-Rechten ausgeführt

„Dies hat den Vorteil, dass der Benutzer weiß, wonach gefragt wird und wo das Passwort verwendet wird, wenn Sie in Ihrem Skript eine Kopie nehmen oder es im Speicher lassen könnten

Vielen Dank für Ihre schnelle Antwort. Obwohl ich verstehe, dass Sie ein Skript in seiner Gesamtheit als Root-Benutzer ausführen können, möchte ich den Kennwortabrufmechanismus von emulieren sudo. Ich entschuldige mich, wenn ich unklar war.
Du warst klar, aber ich denke, es ist eine schlechte Idee

Ich denke, es hat etwas damit zu tun, ob die Terminal-Echo-Option deaktiviert ist. Ich habe versucht, in meinem Terminal zu laufen stty -echo; cat; stty echound dann etwas einzugeben, und das Schlüsselsymbol wurde angezeigt. CtrlIch habe dann + gedrückt Dund es war weg.