Frage Sudo ohne Passwort ausführen?


Davon inspiriert Frage....

Ich bin die einzige Person, die mein System mit 12.04 benutzt.
Jedes Mal, wenn ich ein sudo Befehl; Das System fragt nach dem Benutzerpasswort (was auf seine Art gut ist).
Wie auch immer, ich habe nachgedacht. ohne das zu aktivieren Wurzel Konto; Wie kann ich die sudo-Befehle ausführen, die nicht nach einem Benutzerpasswort zur Authentifizierung fragen?

HINWEIS: Ich möchte den Befehl sudo ohne Authentifizierung über das Passwort ausführen. nur wenn sie über Terminal ausgeführt werden.
Ich möchte diese zusätzliche Sicherheitsebene nicht von anderen Funktionen entfernen, während ich "Ubuntu Software Center" benutze oder ein Bash-Skript durch Drag-drop der something.sh-Datei auf das Terminal ausführe.


220
2018-06-06 12:30


Ursprung


Du willst also nur nach dem Passwort im Terminal gefragt werden und für andere Dinge nicht, oder anders herum ?! In beiden Fällen halte ich es für eine Hochsicherheitsverletzung - Dr_Bunsen
Ich möchte, dass das System das Passwort nicht nur im Terminal anfordert ... zu irgendeinem anderen Zweck muss das System ein Passwort anfordern. Diese Anforderung ist nur temporär und sollte bei der Konfiguration von n Installation neuer Server verwendet werden. Bei frischen Serverinstallationen dauert die Konfiguration mit sudo Befehlen sehr lange. Passwort wird alle 15 Minuten ausgegeben. ist Kopfschmerzen. Ich möchte kein root-Konto verwenden. - Z9iT
Sie müssen die Diskussion lesen in: askubuntu.com/questions/135428/... - david6
Sicher können Sie das Timeout verlängern. Wenn Sie häufig neue Server-Setups durchführen, sollten Sie darüber nachdenken, den Prozess zu automatisieren. Du wirst nicht bezahlt, um zu schreiben, du wirst dafür bezahlt, Probleme zu lösen und erledigt zu werden. - MauganRa
Verbunden: Wie führe ich den sudo-Befehl ohne Passwort aus? - Eliah Kagan


Antworten:


sudo -i ist der Weg zu gehen, wenn Sie nicht alle 10 Minuten ein Passwort eingeben wollen, während Sie Änderungen in Ihrem System (oder anderen Systemen) vornehmen, und Sie keine Systemdateien ändern möchten.

Es wird Sie zu root mit Ihrem wechseln sudo Benutzerpasswort, wenn Sie die Konsole schließen oder tippen exit Sie sind zurück zu Ihrem normalen Benutzer.


63
2018-06-06 13:36



Wird dies so bleiben, dass ich das Passwort nur einmal eingeben muss ... und bis zu dem Zeitpunkt, an dem ich nicht gehe; Wetter 5 Stunden. oder 15 .... Das System fragt nicht nach dem Passwort, wenn ein Sudo-Befehl ausgegeben wird. - Z9iT
@ Z9iT bis Sie eingeben exit oder bis Sie das Terminal-Emulator-Fenster schließen. - Bruno Pereira
Danke .. Akzeptiert diese Antwort, weil es den Zweck der Ausgabe von sudo-Befehlen ohne Passwort-Authentifizierung für n-Stunden bis zu der Zeit, die wir nicht beenden wird. Server-Dateien nicht zu ändern ist ein Plus. - Z9iT
Dies beantwortet die Frage nicht wirklich, da Sie das Passwort noch eingeben müssen, um an diesem Punkt root zu werden. - Adam F
Nicht, wenn Sie eine virtuelle Maschine in einer gesicherten Umgebung ausführen und Sie möchten, dass die Aufgabe sofort ausgeführt wird und Sie sich nicht mit Kennwörtern beschäftigen möchten. Diese Antwort beantwortet die Frage nicht, obwohl es sich um eine hilfreiche Information handelt. Ich stimme Adam F zu - Jonathan Komar


Der Ansatz zur Lösung Ihres Problems besteht darin, Ihren Benutzer in die sudoers-Datei zu versetzen, wie Sie sehen können.

Öffnen Sie das Terminalfenster und geben Sie Folgendes ein:

sudo visudo

Geben Sie am Ende der Datei Folgendes ein:

$USER ALL=(ALL) NOPASSWD: ALL

Woher $USER ist Ihr Benutzername in Ihrem System. Speichern und schließen Sie die sudoers-Datei (wenn Sie Ihren Standard-Terminal-Editor nicht geändert haben (Sie werden wissen, ob Sie ihn haben), drücken Sie ctl + x, um zu beenden nano (Beachten Sie jedoch, dass der Screenshot unten zeigt vim), und Sie werden aufgefordert zu speichern).

sudoers file]

Danach können Sie im Terminalfenster tippen sudo <Whatever you want>, ohne zur Eingabe des Passworts aufgefordert zu werden.

Dies gilt nur für sudo Befehl im Terminalfenster. Wenn Sie beispielsweise versuchen, ein Paket im Software-Center zu installieren, werden Sie aufgefordert, Ihr Passwort einzugeben, wie Sie im nächsten Screenshot sehen können.

gui password prompt

Ich denke, das ist was du willst.


438
2018-06-06 13:20



Es wird empfohlen zu verwenden sudo visudo anstatt es direkt zu bearbeiten. Auch das Ändern der Berechtigungen der sudoers kann sich selbst aussperren. Beim Editieren mit vim, benutzen :wq! um in schreibgeschützte Dateien zu schreiben und den Editor zu beenden. Auf diese Weise sind die Berechtigungen 644 nicht notwendig. - Lekensteyn
Dies ist ein ernsthaftes Sicherheitsrisiko. Jeder, der ein Konto mit sudo-Rechten übernimmt, kann die Kontrolle über das gesamte System übernehmen und jeden weiteren Zugriff auf diesen Computer sperren, was nicht unbedingt empfohlen wird. - Bruno Pereira
@ wil93 du verpasst den Punkt: ein Skript, das fordert sudo install crapware wird in diesem Fall kein Passwort anfordern und alles, was du hast, in Unordnung bringen und du musst nicht physisch neben einer Maschine sein, um Skripte zu verteilen, wenn ich das letzte Mal überprüft habe ... Dies ist nur ein Beispiel. - Bruno Pereira
@BrunoPereira Wenn Sie vorhaben, nicht vertrauenswürdige Skripte auszuführen, dann Das ist das Sicherheitsrisiko (auch wenn Sudo nach einem Passwort fragt, könnte ein bösartiges Skript immer tun rm -rf ~einige Dinge verderben). Insgesamt würde ich nicht «ernsthafte Sicherheitsrisiko» die einfache Entfernung der Passwortabfrage von Sudo nennen. - wil93
Stimme mit @ wil93 überein. Wenn Sie ein nicht vertrauenswürdiges Skript ausführen, ist die Eingabe eines Kennworts nicht mehr als eine Chance, den Vorgang abzubrechen, während ich bezweifle, dass es für die meisten Benutzer nutzlos ist. Der Punkt ist, Sie wissen, wo das Skript aus und was es tut. - Chad


Root-Sudo-Timeouts sind die einfachste und sicherste Möglichkeit, dies zu tun. Ich werde alle Beispiele anordnen, aber seien Sie gewarnt, es ist sehr riskant, wenn Sie das tun, obwohl dieser Weg viel sicherer ist:

sudo visudo

Dies öffnet einen Editor und verweist auf die sudoers-Datei - Ubuntu ist 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 notiert mit (vi!). Ignoriere diese, wenn du nano verwendest.)

Verwenden Sie die Pfeiltasten, um zum Ende der Defaults Linie.

(vi!) Drücken Sie die Taste A (Großbuchstaben "a"), um sich am Ende der aktuellen Zeile zu bewegen und in den Bearbeitungsmodus zu gelangen (Anhängen nach dem letzten Zeichen in der Zeile).

Gib jetzt ein:

,timestamp_timeout=X

Wobei X der Zeitablauf in Minuten ist. Wenn Sie 0 angeben, werden Sie immer nach dem Passwort gefragt. Wenn Sie einen negativen Wert angeben, wird das Zeitlimit niemals ablaufen. Z.B. Defaults env_reset,timestamp_timeout=5.

(vi!) Drücken Sie Esc, um zum Befehlsmodus zurückzukehren. Wenn Sie mit der Bearbeitung zufrieden sind, tippen Sie ein :w  Eingeben um die Datei zu schreiben und :q  Eingeben um vi zu verlassen Wenn Sie einen Fehler gemacht haben, besteht der einfachste Weg darin, von Anfang an zu wiederholen, ohne zu speichern (Hit Flucht um in den Befehlsmodus zu gelangen) und tippen Sie dann: q! Eingeben.

Schlagen Strg+X, dann Y, dann Eingeben Speichern Sie Ihre Datei und beenden Sie nano.

Vielleicht möchten Sie die Sudoers und vi Handbuchseiten für weitere Informationen lesen.

man sudoers
man vi

Zeitlimitwert zurücksetzen mit:

sudo -k

Mit diesen Anweisungen entfernen Sie die Eingabeaufforderung für ein Kennwort, wenn Sie den Befehl sudo verwenden. Der sudo-Befehl muss jedoch weiterhin für den Root-Zugriff verwendet werden.

Bearbeiten Sie die Sudoers-Datei

Öffnen Sie ein Terminalfenster. Eintippen sudo visudo. Fügen Sie am Ende der Datei die folgende Zeile hinzu (wenn nicht, kann sie durch spätere Einträge annulliert werden):

<username> ALL=NOPASSWD: ALL

Ersetzen <username> mit Ihrem Benutzernamen (ohne die <>). Dies setzt voraus, dass Ubuntu eine Gruppe mit demselben Namen wie Ihr Benutzername erstellt hat, was typisch ist. Sie können die Gruppenbenutzer oder jede andere Gruppe, in der Sie sich befinden, abwechselnd verwenden. Vergewissern Sie sich, dass Sie sich in dieser Gruppe befinden. Dies kann überprüft werden, indem Sie zu System -> Administration -> Benutzer und Gruppen gehen.

Beispiel:

michael ALL=NOPASSWD: ALL

Geben Sie ^ X ein (Strg+X) beenden. Dies sollte nach einer Option zum Speichern der Datei fragen, geben Sie Y zum Speichern ein.

Melden Sie sich ab, und melden Sie sich dann wieder an. Dadurch können Sie jetzt den Befehl sudo ausführen, ohne dass Sie zur Eingabe eines Kennworts aufgefordert werden.

Das root-Konto

Aktivieren des root-Kontos

Die Aktivierung des Root-Accounts ist nur selten erforderlich. Fast alles, was Sie als Administrator eines Ubuntu-Systems tun müssen, kann über sudo oder gksudo erfolgen. Wenn Sie wirklich eine permanente Root-Anmeldung benötigen, besteht die beste Alternative darin, eine Root-Login-Shell mit dem folgenden Befehl zu simulieren:

sudo -i

Wenn Sie jedoch Muss Aktivieren Sie Root-Logins, Sie können es wie folgt tun:

sudo passwd root

Erneutes Deaktivieren Ihres root-Kontos

Wenn Sie Ihr Root-Konto aus irgendeinem Grund aktiviert haben und es erneut deaktivieren möchten, verwenden Sie den folgenden Befehl im Terminal:

sudo passwd -dl root

Systemweite Gruppe sudo

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Abmelden und dann wieder rein.

Setze Sudo Timeout zurück

Sie können sicherstellen, dass sudo das nächste Mal nach dem Passwort fragt, indem Sie Folgendes ausführen:

sudo -k

30
2017-10-30 01:15



Ich postete dies, bevor ich hinzufügte, für einen systemweiten Weg, dies und andere zu tun, lesen Sie hier: - user209328
Dies war eine späte Antwort, aber ist die umfassendste in Bezug auf die Optionen, die es Ihnen gibt. - jenming


Die bevorzugte Möglichkeit, einzelne (oder Gruppen-) Berechtigungen zu erteilen, wäre das Hinzufügen von Dateien unter /etc/sudoers.d

Dies unterscheidet lokale Änderungen von der Standardrichtlinie und spart Zeit für den Fall, dass sich die Datei sudoers distribution ändert.

Beispielsweise:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Wird sehr deutlich machen, welche Benutzer die Erlaubnis erhalten haben.

In ähnlicher Weise kann eine Datei zum Verwalten mehrerer Direktiven verwendet werden:

sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Bitte sehen /etc/sudoers.d/README  für mehr Informationen.


10
2018-02-01 15:54



Der echo-Befehl ist fehlgeschlagen, obwohl ich root bin. aber ich habe die Datei hinzugefügt und direkt bearbeitet und dies hat am letzten Ubuntu funktioniert (während das Hinzufügen zu den Sudoers direkt nicht funktioniert hat!) - scape
Der richtige Weg ist es, es zu tun tee Befehl. - woto


Nice one-liner zum Entfernen von sudo fordert den aktuellen Benutzer auf

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

5
2018-06-27 17:50



Ich denke, du könntest einfach tun: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, nur visudo braucht sudo immerhin (und sogar env wird in der Standardkonfiguration (IIRC) nicht benötigt. - muru
Es gibt so viel, was hier schiefgehen könnte (natürlich alle Benutzerfehler), dass es meiner bescheidenen Meinung nach bevorzugt ist, die sudoer-Datei direkt zu bearbeiten (sudo visudo), während das Ergebnis getestet wird (mit dem Editor noch geöffnet), für die neuen Benutzer, die versucht sein könnten, dieses "Einliner" zu versuchen. - michael
Danke für die Rückmeldung! Ich habe gerade schnell versucht, Skript-ify das Entfernen von sudo Passwort-Eingabeaufforderung in meinem flüchtigen Test VMs. Fühlen Sie sich frei, Verbesserungen vorzuschlagen :) - Eric Landry


Natürlich, was Sie tun möchten, ist nicht zu empfehlen. Nach einer Weile, obwohl sie eintrat sudo wird so automatisch, dass seine Nützlichkeit abnimmt.

Ein anderer Ansatz besteht darin, Ihre sudoers-Datei so zu belassen, wie sie ist, und, während Sie Ihren zigtausend Servern etwas kompliziertes tun, eingeben sudo bash. Dadurch erhalten Sie eine Shell, die als Root authentifiziert wird, bis Sie sie beenden.


4
2018-06-06 13:27



sudo -s oder sudo -i sind wahrscheinlich beide bessere Ideen als sudo bash, weil sie sicherstellen, dass die Umwelt gesund ist und Dinge. - Darael
"gesund und dinge" ist nicht generell im bereich der "besseren ideen", könnte jemand eine technische erklärung geben, warum sudo -s oder sudo -i besser ist als sudo bash? (Edit: Hier ist eine relevante Frage askubuntu.com/questions/376199/ ... ) - Nuzzolilo
eine Anzahl von sudo Befehle (besonders an sudo pip ...) benötigen sudo -H (HOME setzen), damit der Befehl ordnungsgemäß ausgeführt wird. In anderen Fällen, sudo -E (Erhaltung env) kann erforderlich sein. Laufen sudo bash wahrscheinlich wird in den meisten Fällen funktionieren, aber nicht in allen, und wenn nicht, wird es nicht klar, warum. - michael
sudo su ist der traditionelle Weg, um die Rollen zu wechseln und einen sys admin zu übernehmen. - user1656671


Von Superbenutzer kommt eine gute Antwort:

Verwenden Sie den -S-Schalter, der das Passwort von STDIN liest:

echo <password> | sudo -S <command>

Ersetzen <password> mit deinem Passwort.


1
2018-05-17 00:12