Wie können Superuser-Berechtigungen länger als mit sudo verwendet werden?

25

Gibt es eine Möglichkeit, mit der ich dem sudoBefehl Berechtigungen für einen längeren Zeitraum als die Standardzeit erteilen kann ?

Es kann schwierig sein, das sudoKennwort einzugeben, wenn viele Pakete installiert werden müssen. Daher wäre es hilfreich, wenn ein Befehl oder eine Konfiguration vorhanden ist, die sich auf die Nutzungsdauer auswirkt.

Sag mir warum
quelle
3
Also nutzt niemand sumehr? Je?
Mr Lister
9
@MrLister sudo -iund Sie haben eine Wurzelschale, bereit für jedermann zu helfen, sich in den Füßen während so viel Zeit wie ...
Rmano
1
@ DevRobot, hast du eine Quelle dafür? Es fällt mir schwer zu glauben, dass Canonical einen so wichtigen Befehl entfernen würde, und ich kann auf Google nichts darüber finden.
DJMcMayhem
9
@DevRobot subenötigt root, um ein Passwort zu haben. Standardmäßig hat der Root-Benutzer von Ubuntu kein Passwort. Daher kann man nicht surooten. suarbeitet hier wie vorgesehen. Versuchen Sie es mit jedem Benutzer, der ein Passwort hat.
muru
3
@muru sudo sufunktioniert gut, wenn auch ein bisschen repetitiv.
Coteyr

Antworten:

27

Das Verhalten von sudowird in der /etc/sudoersDatei konfiguriert . Es gibt eine timestamp_timeoutOption, die den Benutzer nach einer bestimmten Zeit zur Eingabe des Passworts auffordert.

Von Menschenliebhabern

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

Um diese Einstellung zu ändern, gehen Sie wie folgt vor:

  1. Im Terminal laufen sudo visudo. visudowird speziell zum Bearbeiten von /etc/sudoersDateien verwendet und verwendet standardmäßig einen nanoTexteditor.
  2. Suchen Sie die Zeilen, die mit beginnen Defaults. Fügen Sie die folgende Zeile hinzu

    Defaults        timestamp_timeout=x
    

    Dabei ist x die Anzahl der Minuten, die Sie zwischen den Eingabeaufforderungen benötigen

  3. Speichern Sie die Datei mit Ctrl+O

Sergiy Kolodyazhnyy
quelle
12

Von man sudoers:

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

Wie Sie sehen, sudobeträgt das Standardzeitlimit 15 Minuten. Sie können diesen Wert in ändern /etc/sudoers.

Sie bearbeiten nicht direkt /etc/sudoers, sondern verwenden visudodies.

Von man visudo:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

Geben Sie also sudo visudoein Terminal ein, das die /etc/sudoersDatei im nanoTexteditor öffnet .

Suchen Sie nach dieser Zeile:

Defaults    env_reset

Und fügen Sie hinzu, wo X die Zeit in Minuten ist, die Sie einstellen möchten.timestamp_timeout=X

Also als Beispiel:

Defaults    env_reset,timestamp_timeout=5

Wenn Sie 0 angeben, werden Sie immer nach dem Passwort gefragt. Wenn Sie einen negativen Wert angeben, läuft das Timeout nie ab.

Sobald Sie fertig sind, speichern und beenden.

Siehe RootSudoTimeout

Ron
quelle
Schlagen Sie
1
Du bist gut -_- b Ich bin auf einem Laptop. . . Vielleicht brauche ich mehr Kaffee
Sergiy Kolodyazhnyy
Sie können zum Beispiel auch -1 auf Zeitüberschreitung setzen, wenn Sie nie möchten, dass eine Passwortabfrage ausgelöst wird.
Michał Żywiecki
8

Versuche dies .

  1. Führen Sie den folgenden Befehl in einem Terminal aus:

    sudo visudo
    
  2. Scrolle runter zu der Zeile, die so aussieht:

    Defaults        env_reset
    
  3. Ändern Sie es zum Beispiel:

    Defaults        env_reset,timestamp_timeout=30
    

Ändern Sie 30 in die Zeit in Minuten, die gewartet werden soll, bevor das Zeitlimit überschritten wird. Sie können auch auf 0 ändern , wenn Sie ein Passwort - Abfrage jedes Mal , wenn Sie sudo ausgeführt werden sollen, oder -1 , wenn Sie nie eine Aufforderung zur Kennworteingabe Drücken Sie wollen Ctrl+ Xbis Ende Bearbeitung, Y speichern Sie die Änderungen, und Enter zu verlassen.

Hier ist Quelle: http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774

Michał Żywiecki
quelle
5

Sie können die /etc/sudoersDatei bearbeiten (mit sudo visudo: Vorsicht) und eine Zeile wie hinzufügen

Defaults:myname timestamp_timeout=15 

Wo mynameist deine Benutzer-ID? Der Timeout-Wert wird in Minuten angegeben. Sie können den Wert -1 verwenden, um niemals abzulaufen, und dann sudo -keingeben, um die Authentifizierung abzubrechen, sodass Sie erneut ein Kennwort benötigen.

Sie können auch einen Eintrag hinzufügen, der besagt, dass für einen bestimmten Befehl überhaupt kein Kennwort erforderlich ist.

meuh
quelle
1
+1 für die Erwähnung sudo -k, dass die zwischengespeicherte Authentifizierung manuell ungültig gemacht werden soll.
Byte Commander
5

Ich kann nicht glauben, dass der einfachste Befehl:

sudo -s

wird hier nicht erwähnt. Der Schalter "-s" gibt Ihnen eine Konsole mit Root-Berechtigungen, die so lange gültig ist, bis Sie sie beenden. Mit den Standardeinstellungen müssen Sie nicht herumhantieren.

Oliver Friedrich
quelle
1
Warum wird das abgelehnt?
Coteyr
3
Ich habe nicht abgelehnt, aber dies hat den Vorteil, dass sudojeder einzelne Befehl protokolliert wird (damit Sie sehen können, was Sie getan haben). Sie verlieren diese Protokollierung, wenn Sie eine Root-Shell öffnen.
guntbert
1
@guntbert ist sicher jeder befehl protokolliert, aber in der geschichte des root-benutzers.
Oliver Friedrich
@ BeowulfOF nicht unbedingt - der Bash-Verlauf ist etwas völlig anderes als das Systemprotokoll.
guntbert
1
Wirklich, @guntbert, wenn du das Auth-Log so benutzt, hast du verschiedene Probleme.
Oliver Friedrich
1

Bei allen anderen bisherigen Antworten scheint es darum zu gehen, das Standardzeitlimit so lange zu ändern, bis Sie Ihr Kennwort erneut mit eingeben müssen sudo. Wenn Sie jedoch nur Befehle als root ausführen möchten, ohne jedem Befehl ein vorangestelltes Kommando zu geben sudo, können Sie eine root-Shell erhalten mit:

sudo -i

oder

sudo bash

oder

sudo <your preferred shell here>

Während alle diese Prozesse nur einen einzelnen Prozess als root starten, handelt es sich bei dem betreffenden Prozess nur um eine Shell, mit der Sie beliebig viele andere Prozesse als root starten können, ohne dass Sie weitere Eingaben sudooder ein Kennwort eingeben müssen. :)

Natürlich geht mit großer Macht große Verantwortung einher, mach keine dummen Sachen usw.

reirab
quelle
1
SEIEN SIE damit EXTREM VORSICHTIG. In der Tat werden Sie eine Root-Shell ausführen.
hmayag
4
Warum wird das herabgestimmt?
Coteyr
@hmayag Ja, wenn Sie eine Root-Shell starten, wird tatsächlich eine Root-Shell ausgeführt. Daher der Grund für die Warnung am Ende.
Reirab
@coteyr Möglicherweise aus demselben Grund wie die Antwort von BeoWulf.
guntbert
1

Eine zu viele Fragen von den Benutzern Nachdem ich die Config - Dateien geändert und waren verwirrt darüber , warum ihre Veränderungen nach einem Paket - Upgrade überschrieben wurden, werde ich beachten Sie, dass , wenn Sie ändern möchten timestamp_timeout, ist es besser , es zu tun , indem eine Datei in der Schaffung /etc/sudoers.dstatt /etc/sudoersdirekt ändern .

Also solltest du tun

sudo visudo -f /etc/sudoers.d/timeout

(Der Name der Datei kann beliebig sein, solange sie keinen Punkt ( .) enthält oder mit einer Tilde ( ~) endet .) Anstatt sie /etc/sudoersin einem Editor Ihrer Wahl zu öffnen /etc/sudoers.d/timeout, wird sie normalerweise als leere Datei geöffnet , da sie nicht vorhanden ist. Legen Sie Ihre

Defaults timestamp_timeout=X

darin speichern und wie gewohnt. Wenn dann eine neue Version von /etc/sudoersherauskommt, müssen Sie nicht zwischen der Installation der neueren Version oder dem Behalten Ihrer Änderungen wählen - Sie haben automatisch beide.

fkraiem
quelle
1

Wenn Sie nach einer Lösung suchen , die die Konfigurationsdatei nicht ändert , z. B. wenn das Token für eine bestimmte Sitzung länger gültig sein soll oder nur nach einer expliziten Aktion angewendet werden soll, versuchen Sie Folgendes:

# Work as is with Bash 4.1.2(1)-release and later, this might require some adaptation for other shells
(while [ true ]; do sudo -v; sleep $((60*4)); done)&

Grundsätzlich aktualisiert der vorherige Code das Sudo-Token alle 4 Minuten über einen Prozess, der im Hintergrund gestartet wird.

In der Tat laut sudoHandbuch: "Das Standard-Timeout für die Passworteingabe für die Sicherheitsrichtlinie von sudoers beträgt 5 Minuten ." Abhängig von der systemspezifischen Richtlinie können Sie also die Zeitspanne zwischen zwei Zyklen ändern, in der die Schleife in den Ruhezustand versetzt wird.

Psychosklave
quelle