Inspiriert von dieser Frage ....
Ich bin die einzige Person, die mein System mit 12.04 benutzt.
Jedes Mal, wenn ich einen sudo
Befehl erteile; Das System fragt nach dem Benutzerpasswort (was auf seine eigene Weise gut ist).
Ich dachte jedoch nach; ohne das Root- Konto zu aktivieren ; Wie kann ich die sudo-Befehle ausführen, bei denen kein Benutzerpasswort zur Authentifizierung abgefragt wird?
HINWEIS: Ich möchte den Befehl sudo ausführen, ohne mich über ein Kennwort zu authentifizieren. Nur wenn sie über das Terminal ausgeführt werden.
Ich möchte diese zusätzliche Sicherheitsebene nicht von anderen Funktionen entfernen, z. B. wenn Sie das 'Ubuntu Software Center' verwenden oder ein Bash-Skript ausführen, indem Sie die Datei something.sh auf das Terminal ziehen.
quelle
Antworten:
sudo -i
Dies ist der richtige Weg, wenn Sie nicht alle 10 Minuten ein Kennwort eingeben möchten, während Sie Änderungen an Ihrem System (oder anderen Systemen) vornehmen, und keine Systemdateien ändern möchten.Sie werden mit Ihrem
sudo
Benutzerkennwort zu root weitergeleitet , wenn Sie die Konsole schließen oder eingeben, dass Sieexit
wieder zu Ihrem normalen Benutzer zurückkehren.quelle
exit
oder das Terminalemulatorfenster schließen.Sie können konfigurieren
sudo
, niemals nach Ihrem Passwort zu fragen.Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
Wo
$USER
ist dein Benutzername auf deinem System? Speichern und schließen Sie die sudoers-Datei (wenn Sie Ihren Standard-Terminal-Editor nicht geändert haben (Sie werden wissen, ob dies der Fall ist), drücken Sie zum Beenden ctl + xnano
und Sie werden zum Speichern aufgefordert).Ab Ubuntu 19.04 sollte die Datei nun ungefähr so aussehen
Danach können Sie
sudo <whatever you want>
ein Terminal-Fenster eingeben, ohne nach dem Kennwort gefragt zu werden.Dies gilt nur für die Verwendung des
sudo
Befehls im Terminal. Sie werden weiterhin zur Eingabe Ihres Kennworts aufgefordert, wenn Sie (beispielsweise) versuchen, ein Paket aus dem Software Center zu installierenquelle
sudo visudo
anstatt es direkt zu bearbeiten. Auch das Ändern der Berechtigungen der Sudoer kann Sie ausschließen.vim
Verwenden Sie:wq!
beim Bearbeiten mit , um schreibgeschützte Dateien zu erstellen und den Editor zu beenden. Auf diese Weise sind Berechtigungen 644 nicht erforderlich.sudo install crapware
fragt, fragt in diesem Fall nicht nach einem Passwort und kann alles durcheinander bringen, und Sie müssen sich nicht physisch neben einem Computer befinden, um Skripte zu verteilen, als ich sie das letzte Mal überprüft habe. Dies ist nur ein Beispiel.rm -rf ~
einige Dinge durcheinander bringen). Insgesamt würde ich das einfache Entfernen der Passwortabfrage von sudo nicht als "ernstes Sicherheitsrisiko" bezeichnen.Root-Sudo-Timeouts sind die einfachste und sicherste Möglichkeit, dies zu tun. Ich werde alle Beispiele darlegen, aber seien Sie gewarnt, es ist sehr riskant, wie Sie dies tun, obwohl dieser Weg viel sicherer ist:
Dadurch wird ein Editor geöffnet und auf die sudoers-Datei verwiesen. Ubuntu verwendet standardmäßig nano, andere Systeme verwenden Vi. Sie sind jetzt ein Superuser, der eine der wichtigsten Dateien auf Ihrem System bearbeitet. Kein Stress!
(Vi spezifische Anweisungen mit (vi!) . Ignorieren Sie diese, wenn Sie Nano verwenden.)
Verwenden Sie die Pfeiltasten, um zum Ende der
Defaults
Zeile zu gelangen.(vi!) Drücken Sie die A-Taste (Großbuchstabe "a"), um sich am Ende der aktuellen Zeile zu bewegen und in den Bearbeitungsmodus zu wechseln (nach dem letzten Zeichen in der Zeile anhängen).
Geben Sie nun Folgendes ein:
Dabei steht X für das Ablaufen des Zeitlimits in Minuten. Wenn Sie 0 angeben, werden Sie immer nach dem Passwort gefragt. Wenn Sie einen negativen Wert angeben, läuft das Timeout nie ab. Eg
Defaults env_reset,timestamp_timeout=5
.(vi!) Drücken Sie die Escape-Taste, um zum Befehlsmodus zurückzukehren. Wenn Sie mit der Bearbeitung zufrieden sind, geben Sie Folgendes ein,
:w
Enterum die Datei zu schreiben und:q
Entervi zu beenden. Wenn Sie einen Fehler gemacht haben, ist es möglicherweise am einfachsten, den Vorgang von Anfang an zu wiederholen, den Vorgang ohne Speichern zu beenden (drücken, Escapeum in den Befehlsmodus zu wechseln) und dann Folgendes einzugeben: q! Enter.Hit Ctrl+ X, dann Y, dann EnterIhre Datei und beendet nano zu speichern.
Vielleicht möchten Sie die Handbuchseiten sudoers und vi lesen, um weitere Informationen zu erhalten.
Timeout-Wert zurücksetzen mit:
Mit diesen Anweisungen entfernen Sie die Aufforderung zur Eingabe eines Kennworts, wenn Sie den Befehl sudo verwenden. Der Befehl sudo muss jedoch weiterhin für den Root-Zugriff verwendet werden.
Bearbeiten Sie die sudoers-Datei
Öffnen Sie ein Terminalfenster. Tippen Sie ein
sudo visudo
. Fügen Sie die folgende Zeile zum ENDE der Datei hinzu (falls dies nicht am Ende der Fall ist, kann dies durch spätere Einträge aufgehoben werden):Ersetzen Sie
<username>
durch Ihren Benutzernamen (ohne den<>
). Dies setzt voraus, dass Ubuntu eine Gruppe mit demselben Namen wie Ihr Benutzername erstellt hat, was typisch ist. Sie können alternativ die Gruppenbenutzer oder jede andere Gruppe verwenden, in der Sie sich befinden. Stellen Sie einfach sicher, dass Sie sich in dieser Gruppe befinden. Dies kann unter System -> Administration -> Benutzer und Gruppen überprüft werden.Beispiel:
Geben Sie zum Beenden ^ X ( Ctrl+ X) ein. Daraufhin wird eine Option zum Speichern der Datei angezeigt. Geben Sie zum Speichern Y ein.
Melden Sie sich ab und dann wieder an. Auf diese Weise können Sie den Befehl sudo jetzt ausführen, ohne zur Eingabe eines Kennworts aufgefordert zu werden.
Das Root-Konto
Aktivieren des Root-Kontos
Das Aktivieren des Root-Kontos ist selten erforderlich. Fast alles, was Sie als Administrator eines Ubuntu-Systems tun müssen, kann über sudo oder gksudo erfolgen. Wenn Sie wirklich eine dauerhafte Root-Anmeldung benötigen, ist die beste Alternative, eine Root-Anmeldeshell mit dem folgenden Befehl zu simulieren:
Wenn Sie jedoch Root-Anmeldungen aktivieren müssen , können Sie dies folgendermaßen tun:
Deaktivieren Sie Ihr Root-Konto erneut
Wenn Sie aus irgendeinem Grund Ihr Root-Konto aktiviert haben und es wieder deaktivieren möchten, verwenden Sie den folgenden Befehl im Terminal:
Systemweite Gruppen-Sudo
Melden Sie sich ab und dann wieder an.
Setzen Sie das Sudo-Timeout zurück
Sie können sicherstellen, dass sudo beim nächsten Mal nach dem Kennwort fragt, indem Sie Folgendes ausführen:
quelle
sudo env EDITOR=/bin/nano visudo
zuverlässig zu bearbeitensudoers
. (Update-Alternativen können auch zum Einstellen des Editors verwendet werden)Die bevorzugte Möglichkeit, Einzel- (oder Gruppen-) Berechtigungen zu erteilen, ist das Hinzufügen von Dateien unter
/etc/sudoers.d
Dies trennt lokale Änderungen von der Standardrichtlinie und spart Zeit, falls sich die Datei des Distributions-Sudoers ändert.
Verwenden Sie, um den aktuell angemeldeten Benutzer zu einem Sudoer zu machen und ihn
sudo
nicht zur Eingabe eines Kennworts aufzufordernDadurch wird eine Datei mit dem Namen erstellt
/etc/sudoers.d/$USER
(wobei$USER
der Benutzername des Benutzers ist, unter dem Sie angemeldet waren, als Sie diesen Befehl ausgeführt haben), um zu verdeutlichen, welchen Benutzern die Berechtigung erteilt wurde.Wenn Sie dies für einen anderen Benutzer tun möchten, ersetzen Sie einfach beide Instanzen von
$USER
durch einen anderen Benutzernamen im obigen Befehl.Ebenso kann eine Datei zum Verwalten mehrerer Anweisungen verwendet werden:
Siehe
/etc/sudoers.d/README
undman sudoers
für weitere Informationen.quelle
tee
Befehl zu tun .sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
sudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
Shell wird die Umleitung in der ursprünglichen Shell ausgeführt, sodass sie nur in der Root-Shell funktionieren kann.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Netter Einzeiler zum Entfernen von Sudo-Eingabeaufforderungen für den aktuellen Benutzer
quelle
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
nur (und wird in der Standardkonfiguration gar nicht benötigt, IIRC).visudo
sudo
env
sudo visudo
), während das Ergebnis getestet wird (wobei der Editor noch geöffnet ist). für jene neuen Benutzer, die versucht sein könnten, diesen "Einzeiler" zu versuchen.sudo chmod 440 /etc/sudoers.d/$(logname)
Dateiberechtigungen noch korrigieren, wie in der README-Datei in diesem Verzeichnis angegeben.Natürlich wird nicht empfohlen, was Sie tun möchten. Nach einer Weile wird das Betreten
sudo
jedoch so automatisch, dass seine Nützlichkeit abnimmt.Ein anderer Ansatz ist, die sudoers-Datei so zu belassen wie sie ist, und gleichzeitig etwas Kompliziertes mit Ihren zig hundert Servern zu tun
sudo bash
. Dadurch erhalten Sie eine Shell, die als root authentifiziert wird, bis Sie sie beenden.quelle
sudo -s
odersudo -i
sind wahrscheinlich beide bessere Ideen alssudo bash
, weil sie sicherstellen, dass die Umwelt gesund und die Dinge sind.sudo
Befehlen (insbesondere fürsudo pip ...
) ist diesudo -H
Einstellung HOME erforderlich , damit der Befehl ordnungsgemäß ausgeführt werden kann. In anderen Fällen kannsudo -E
(env erhalten) erforderlich sein. Laufen wirdsudo bash
wahrscheinlich in den meisten Fällen funktionieren, aber nicht in allen. Wenn dies nicht der Fall ist, ist nicht klar, warum.Vom Super User kommt eine gute Antwort:
Verwenden Sie den -S-Schalter, der das Passwort von STDIN liest:
Ersetzen Sie
<password>
durch Ihr Passwort.quelle
echo
damit es nicht in der Geschichte erscheint?Einzeiler
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
quelle
Dies ist eine einzeilige Lösung, die auch die Dateiberechtigungen ändert, wie in den
/etc/sudoer.d/README
folgenden Abschnitten angegeben :quelle
Erweiterung der @ upteryx-Idee.
So habe ich den Benutzer ohne Root-Kennwort in ein kurzlebiges Docker-Image für die Verwendung in einer CICD-Pipeline implementiert:
quelle