Wie wird 'sudo' veranlasst, das Passwort aus einer Datei zu holen?

12

Ich möchte einen Befehl ausführen, für den das sudo-Kennwort erforderlich ist:

sudo apt-get update

Sollte das nicht funktionieren (ich habe das Passwort in einer normalen Textdatei gespeichert passwd.txt):

sudo apt-get update <~/passwd.txt

Dies ist meine Logik dafür, warum es funktionieren SOLLTE: Wenn das Passwort erforderlich ist, wird der Benutzer aufgefordert, das Passwort über die Tastatur einzugeben. Aber das Umleiten des stdinLesens aus der passwd.txtDatei sollte funktionieren.

Sollte es nicht?

MichaelB
quelle
Sie würden normalerweise expecttcl-Skript verwenden, um solche Dinge zu automatisieren.
Adobe
Wenn Sie dies fragen müssen, machen Sie wahrscheinlich etwas falsch. Können Sie uns mitteilen, was Sie zuerst erreichen möchten? Man sollte niemals solche Hacks verwenden müssen. Dies ist ein Hinweis darauf, dass es eine bessere Lösung geben sollte.
Gertvdijk
@gertvdijk Ich bin kein Ubuntu-Experte, aber ich lerne. Ich habe mir Folgendes als Übung gegeben: "Führen Sie einen Befehl in einem Bash-Skript aus, für das das sudo-Privileg erforderlich ist, und verwenden Sie dabei nur die Kenntnisse, die ich derzeit besitze. Ohne Google zu verwenden." Ich kam mit der obigen Antwort und ich dachte, dass es funktionieren sollte. Ich habe später auf AskUbuntu bessere und sicherere Lösungen gefunden.
MichaelB

Antworten:

26

sudoliest stdinstandardmäßig kein Passwort von . Aus der sudoManpage:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

Also solltest du laufen:

sudo -S apt-get update <~/passwd.txt

Beachten Sie, dass das Speichern von Kennwörtern in Dateien keine gute Vorgehensweise ist. Du solltest lesen:

Eric Carvalho
quelle
Verstanden! Kurz n süße Antwort!
MichaelB