Come far durare di più le autorizzazioni dei super-utenti rispetto all'utilizzo di sudo?


25

Esiste un modo attraverso il quale posso fare in modo che il sudocomando mi dia le autorizzazioni per un periodo più lungo del suo tempo predefinito?

Può essere una seccatura dover continuare a inserire la sudopassword quando si richiede l'installazione di molti pacchetti, quindi sarebbe bello se esistesse un comando o una configurazione che può essere fatta per influenzare il suo periodo di utilizzo.


3
Quindi nessuno ne usa supiù? Mai?
Lister,

9
@MrLister sudo -ie tu hai un guscio di radice, pronto per chiunque ad aiutare a spararsi nei piedi durante tutto il tempo che uno come ...
Rmano

1
@DevRobot, hai una fonte per questo? Trovo difficile credere che Canonical avrebbe rimosso un comando così importante e non riesco a trovare nulla al riguardo su Google.
DJMcMayhem,

9
@DevRobot ha subisogno di root per avere una password. Per impostazione predefinita, l'utente root di Ubuntu non ha una password. Pertanto, non è possibile sueseguire il root. susta funzionando come previsto qui. Prova con qualsiasi utente che abbia una password.
Muru,

3
@muru sudo sufunziona bene, anche se un po 'ripetitivo.
Coteyr,

Risposte:


27

Il comportamento di sudoè configurato nel /etc/sudoersfile. Esiste timestamp_timeoutun'opzione responsabile per richiedere all'utente nuovamente la password dopo un determinato periodo di tempo.

Da uomo 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.

Per modificare questa impostazione, procedi come segue:

  1. In esecuzione terminale sudo visudo. visudoviene utilizzato specificamente per modificare il /etc/sudoersfile e per impostazione predefinita utilizza l' nanoeditor di testo.
  2. Trova le linee che iniziano con Defaults. Aggiungi la seguente riga

    Defaults        timestamp_timeout=x
    

    dove x è la quantità di minuti desiderata tra i prompt

  3. Salva il file con Ctrl+O


12

Da 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.

Come puoi vedere, il timeout predefinito sudoè di 15 minuti. È possibile modificare questo valore in /etc/sudoers.

Non modifichi direttamente /etc/sudoers, invece lo usi visudoper farlo.

Da 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.

Quindi, digitare sudo visudoun terminale, che aprirà il /etc/sudoersfile in nanoeditor di testo.

Cerca questa linea:

Defaults    env_reset

E aggiungi dove X è il tempo che vuoi impostare in minuti.timestamp_timeout=X

Quindi come esempio:

Defaults    env_reset,timestamp_timeout=5

Se si specifica 0, verrà sempre richiesta la password. Se si specifica un valore negativo, il timeout non scadrà mai.

Una volta fatto, salva ed esci.

Vedi RootSudoTimeout



1
Sei bravo -_- b Sono su un laptop. . . forse ho bisogno di più caffè
Sergiy Kolodyazhnyy,

È anche possibile impostare, ad esempio, il timeout -1, se non si desidera mai attivare una richiesta di password.
Michał Żywiecki,

8

Prova questo .

  1. Esegui il seguente comando in un terminale:

    sudo visudo
    
  2. Scorri verso il basso fino alla linea simile a questa:

    Defaults        env_reset
    
  3. Modificalo ad esempio:

    Defaults        env_reset,timestamp_timeout=30
    

Cambia 30 al tempo, in minuti, che vuoi che aspetti prima che scada. Puoi anche cambiarlo in 0 se vuoi una richiesta di password ogni volta che esegui sudo, o -1 se non vuoi mai una richiesta di password Premi Ctrl+ Xper terminare la modifica, Y per salvare le modifiche e Invio per uscire.

Ecco la fonte: http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774


5

È possibile modificare il /etc/sudoersfile (con sudo visudo: attenzione) e aggiungere una riga come

Defaults:myname timestamp_timeout=15 

dov'è il mynametuo ID utente. Il valore di timeout è in minuti. È possibile utilizzare un valore di -1 per non scadere mai, quindi digitare sudo -kper terminare l'autenticazione, quindi è necessaria nuovamente una password.

Oppure puoi aggiungere una voce per dire che un comando specifico non ha bisogno di una password.


1
+1 per aver menzionato sudo -kdi invalidare manualmente l'autenticazione memorizzata nella cache.
Byte Commander

5

Non posso credere che il comando più semplice:

sudo -s

non è menzionato qui. L'opzione "-s" ti dà una console con permessi di root, che durano fino a quando non lo esci. Non c'è bisogno di andare in giro con le impostazioni predefinite.


1
Perché questo è votato?
Coteyr,

3
Non ho effettuato il downgrade, ma questo ha un vantaggio nell'utilizzare sudo: ogni singolo comando è registrato (così puoi vedere cosa hai fatto). Si perde quella registrazione quando si apre una shell di root.
Guntbert,

1
@guntbert sicuramente registra tutti i comandi, ma nella cronologia dell'utente root.
Oliver Friedrich,

@BeowulfOF non necessariamente - la storia di bash è qualcosa di completamente diverso dal registro di sistema.
Guntbert,

1
Davvero, @guntbert, se usi il registro di autenticazione in questo modo, hai diversi problemi.
Oliver Friedrich,

1

Tutte le altre risposte finora sembrano incentrate sulla modifica del timeout predefinito per quanto tempo prima è necessario digitare nuovamente la password sudo. Tuttavia, se vuoi essere in grado di eseguire i comandi come root senza anteporre tutti i comandi con sudo, puoi ottenere una shell di root con:

sudo -i

o

sudo bash

o

sudo <your preferred shell here>

Mentre tutti questi avviano un singolo processo come root, il singolo processo in questione è una shell che ti permetterà di avviare tutti gli altri processi che desideri come root senza bisogno di digitare sudoo una password. :)

Naturalmente, con un grande potere derivano grandi responsabilità, non fare cose stupide, ecc.


1
ESSERE ESTREMAMENTE ATTENZIONE con questo. In effetti eseguirai una shell di root.
hmayag,

4
Perché questo è downvoted?
Coteyr,

@hmayag Sì, se avvii una shell di root, eseguirai effettivamente una shell di root. Da qui il motivo dell'avvertimento alla fine.
reirab

@coteyr Forse per lo stesso motivo della risposta di BeoWulf.
Guntbert,

1

Dopo aver visto troppe domande degli utenti che hanno modificato i file di configurazione ed erano confusi sul perché le loro modifiche sono state sovrascritte dopo un aggiornamento del pacchetto, noterò che se si desidera modificare timestamp_timeout, è meglio farlo creando un file /etc/sudoers.danziché modificare /etc/sudoersdirettamente.

Quindi dovresti farlo

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

(il nome del file può essere quello che vuoi purché non contenga un punto ( .) né termina con una tilde ( ~)). Invece di aprirsi /etc/sudoersnel tuo editor preferito, si aprirà /etc/sudoers.d/timeout, normalmente come un file vuoto poiché non esiste. Metti il ​​tuo

Defaults timestamp_timeout=X

in esso e salva come al solito. Quindi, se /etc/sudoersesce una nuova versione , non devi scegliere tra installare la versione più recente o mantenere le tue modifiche: avrai automaticamente entrambe.


1

Se stai cercando una soluzione che non modifica il file di configurazione , ad esempio quando desideri che il token duri più a lungo per una sessione specifica o che si applichi solo dopo un'azione esplicita, puoi provare quanto segue:

# 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)&

Fondamentalmente il codice precedente aggiorna il token sudo ogni 4 minuti , attraverso un processo avviato in background.

In effetti, secondo il sudomanuale: "il timeout di richiesta password predefinito per la politica di sicurezza sudoers è di 5 minuti ". Pertanto, a seconda del criterio specifico del sistema, è possibile modificare la quantità di tempo durante il quale il ciclo passa in sospensione tra due cicli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.