Setze HISTIGNORE auf " sudo -S "
$ export HISTIGNORE='*sudo -S*'
Dann geben Sie Ihr Passwort sicher an sudo weiter:
$ echo "your_password" | sudo -S -k <command>
"HISTIGNORE" bedeutet, diesen Befehl nicht in der Historie zu speichern. Dies ist der Verlauf im Speicher oder die Datei "~ / .bash_history".
Im Folgenden wird Ihr Kennwort beispielsweise sicher an den Befehl sudo weitergeleitet, ohne dass der Verlauf Ihres Kennworts beibehalten wird.
"-S" bedeutet, stdin für das Passwort zu verwenden,
"-K" bedeutet, zwischengespeicherte Anmeldeinformationen zu ignorieren, um sudo zu zwingen, immer nachzufragen. Dies ist für ein konsistentes Verhalten.
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -k whoami
$ echo "<your_password>" | sudo -S -k cat /etc/shadow
$ echo "<your_password>" | sudo -S -k bash /tmp/myscript.sh
Der Nachteil der obigen Methode ist, dass die Befehle, die Sie später im Verlauf ausgeführt haben, nicht vorhanden sind, wenn Sie sie sehen möchten. Eine andere Methode besteht darin, den Cache für Anmeldeinformationen für die sudo-Authentifizierung zu aktualisieren (standardmäßig ist eine Zeitüberschreitung von 5 Minuten aktiviert) und dann sudo separat auszuführen. Der Nachteil ist jedoch, dass Sie sich des 5-Minuten-Cache bewusst sein müssen.
Zum Beispiel:
$ export HISTIGNORE='*sudo -S*'
$ echo "<your_password>" | sudo -S -v
$ sudo whoami
$ echo "<your_password>" | sudo -S -v
$ sudo cat /etc/shadow
$ echo "<your_password>" | sudo -S -v
$ sudo /tmp/myscript.sh
Hinweis Ich habe vor jedem Befehl ein sudo ausgeführt, um sicherzustellen, dass der sudo-Cache aktualisiert wird, da der Standardwert 5 Minuten beträgt. Ja, whoami sollte nicht 5 Minuten dauern, aber ich nehme an, es könnte genauso gut vor jedem Befehl ausgeführt werden, um die Konsistenz zu gewährleisten. Sie könnten auch "export HISTIGNORE = ' sudo -S" setzen'"in Ihre ~ / .bashrc - Datei und laden Sie sie mit". ~ / .bashrc "oder Abmelden und dann Anmelden. Ich denke jedoch, dies für Skriptzwecke zu verwenden, so dass ich es aus Sicherheitsgründen immer auf dem neuesten Stand halte. Einstellen von" echo "" | sudo -S -v "für eine Variable könnte ebenfalls eine gute Idee sein. Führen Sie die Variable dann einfach vor jedem Befehl aus, der Root-Berechtigungen benötigt, siehe Janars Kommentar. Der Kommentar von" John T "sollte auch den Parameter" -k "enthalten Wenn Sie "sudo -S" ohne "-k" ausführen und der sudo-Authentifizierungscache bereits über Ihre Anmeldeinformationen verfügt (und weiterhin gültig ist, beträgt der Standardcache für die sudo-Authentifizierung 5 Minuten), führt bash stattdessen Ihr Kennwort als Befehl aus Schlecht.
halt
als root ausgeführt werden.