An arbeitsreichen Tagen möchte ich rennen
$ ./configure && make && sudo make install && halt
in der Nacht und ins Bett gehen, in der Hoffnung, die Anwendung würde automatisch installiert. Aber was ich am nächsten Tag sehe, ist der Bildschirm, auf dem sudo mich nach dem Passwort fragt. Wie könnte ich sudo mit Passwort in einer Befehlszeile ausführen, oder gibt es eine andere Methode, um dies zu tun?
halt
als root ausgeführt werden.sudo
15-minütige Unterbrechung? Könnten Sie nicht ausführen, sagen wir,sudo ls
oder ähnliches, Ihr Passwort eingeben und dann den obigen Befehl ausführen, wobei diesudo
Berechtigungen noch aktiv sind? (Ich kann das im Moment nicht testen, sonst würde ich das als Antwort posten.)sudo
ist konfigurierbar. Sicherheitsbewusste (auch bekannt als paranoid, wie ich) setzen es auf Null ... :-)Antworten:
Ja, benutze den
-S
Schalter, der das Passwort von STDIN liest:Für Ihren Fall würde es also so aussehen:
natürlich durch
<password>
dein passwort ersetzen .quelle
Sie können Ihre Befehlszeile folgendermaßen ersetzen:
$sudo su
$./configure && make && make install && halt
Sie werden sofort zur Eingabe Ihres Kennworts aufgefordert, und der Rest der Befehle wird als Superuser ausgeführt.
quelle
sudo sh -c "./configure && make && make install && halt"
Einige der anderen Lösungen haben den Nachteil, dass sie unnötig laufen
./configure
undmake
als root fungieren.Das ist ein bisschen kompliziert, aber es sollte funktionieren:
Beachten Sie die Verwendung von doppelten Anführungszeichen, um
$USER
die Erweiterung durch die Shell (ohne Rootberechtigung) zu ermöglichen.Ich könnte auch einen
sleep 60
vor demhalt
Befehl hinzufügen . Ich habe manchmal Dinge wie diese getan, in der Erwartung, dass der Befehl lange ausgeführt wird, aber etwas geht schief und er wird sofort beendet. Damit kannsleep
ich den Befehl beenden, bevor das System heruntergefahren wird. Oder Sie könnenshutdown
mit einem Zeitargument verwenden.quelle
Sie können sudo auch so konfigurieren
visudo
, dass der Benutzer make als sudo ohne Kennwort verwenden kann.quelle
Setze HISTIGNORE auf " sudo -S "
Dann geben Sie Ihr Passwort sicher an sudo weiter:
"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.
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:
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.
quelle
Beachten Sie, dass die Methode in einer älteren Version von sudo nicht funktioniert, insbesondere in "Sudo Version 1.6.7p5":
Wo wie diese Methode funktioniert auf älteren und neuen Versionen sudo:
quelle
Sie können dies auch tun:
quelle
Wenn Sie mehr Sorgfalt walten lassen möchten, können Sie ein Skript erstellen, die Berechtigungen der Datei ändern, damit nur root sie lesen und bearbeiten und dann einfach ausführen kann.
Beispiel:
1) Erstellen Sie eine Datei:
2) Fügen Sie dies ein und speichern Sie:
3) Machen Sie es ausführbar:
4) Ändern Sie die Berechtigungen der Datei so, dass nur Root sie lesen und bearbeiten kann:
5) Führen Sie aus:
Genießen ;-)
quelle
Das Einrichten von sudo ist gefährlich, wenn zufällig festgestellt wird, dass sudo kein Kennwort für Ihr Konto benötigt. Wenn Sie nicht wissen, was Sie tun, tun Sie das nicht. Ich hatte es in meinem lokalen A + Training-Programm mit meinem experimentellen Computer ein zu oft ... -_-
Was John T. gesagt hat, hört sich gut an, es besteht jedoch die Gefahr, dass das Kennwort im Shell-Verlauf gefunden wird. Was CarlF sagte, klingt besser, aber wenn ein Befehl fehlschlägt, wird der Computer weiterhin mit Superuser-Berechtigungen ausgeführt.
quelle
Persönlich mache ich genau das Gleiche wie John T. am 9. November 09 um 2:47, ich habe auch meinen verbessert, gemäß der Anleitung seiner Antwort, danke.
Der Unterschied ist, dass ich normalerweise Variablen benutze, so etwas wie:
Auf diese Weise kann ich leicht meine Variable anstelle von sudo verwenden,
Das ist bei längeren Skripten sehr praktisch. Ich benutze diese hauptsächlich für PCs anderer, die ich warten muss.
Ich empfehle auch, auf Folgendes zu achten:
quelle
Das Problem ist gelöst. Zum Beispiel an den Benutzer root:
quelle