Come faccio ad aumentare il timeout della memoria sudo?


61

So già che devo mettere a punto il file / etc / sudoers ma vorrei vedere le informazioni complete e anche una soluzione che non mi richiederebbe di usare l' vieditor.

Aggiornamento: mai e poi mai provare a modificare il file con qualcos'altro visudo.


1
puoi impostare EDITOR env var usando anche visudo :: sudo env EDITOR = nano visudo
Buona persona

Risposte:


86

Esegui sudo visudoe aggiungi questa riga:

Defaults    timestamp_timeout=-1

Vedere man 5 sudoers. -1fa sì che la password non scada mai. Puoi modificare il numero con quello che desideri in pochi minuti.

La pagina man per sudodice che sudo -v"estende il timeout sudo per altri 5 minuti".

L'esecuzione di 'sudo visudo' invece di modificare il file fa sì che il sistema convalidi il file sudoers prima che esegua il commit delle modifiche. Ad esempio, se lasci un personaggio randagio da qualche parte, quando salvi ed esci, dirà "c'è un errore nel file sudoers, cosa ti piacerebbe fare?" ... quindi ti dà la possibilità di tornare indietro e modificare. Questo in realtà è successo a me solo 10 minuti fa.


20
Sì, ma visudoesegue alcuni controlli di integrità di base sul file sudoers prima di salvare. Se si confonde il file utilizzando vidirettamente, è possibile bloccarsi dall'uso di sudo, rendendo molto difficile annullare la modifica.
Nohillside

4
I privilegi sono simili a quelli di altri sistemi, quindi nulla a che fare con Apple. visudoavvolge l'editor predefinito di sistema (immagino che l'utente root abbia il valore predefinito se il root ha ignorato il valore predefinito), quindi non ha nulla a che fare con il nome della barra vi. Sul mio sistema (non Apple BTW) ottengo nano. Prova export EDITOR='/bin/nano'o qualunque editor ti piaccia, quindi usa visudo.
Chris,

4
Um ... Non puoi usare root per correggerlo, perché non puoi arrivare a root, perché hai appena riempito il tuo file sudo ... Questo è il punto.
daviewales,

1
In un ruolo professionale potresti avere accesso a sudo ma non avere la password di root. Il tuo server potrebbe trovarsi in un datacenter in tutto il paese rendendo difficile l'accesso alla modalità utente singolo. Ma, se tu fossi detto professionista, probabilmente non avresti ricevuto tali avvertimenti. Il punto è che dovresti imparare dai professionisti. Non cercare modi per evitare di formare buone abitudini. Quindi dobbiamo ascoltare le tue grida frenetiche su Stack Exchange e IRC.
Bruno Bronosky,

1
(Forse è ovvio per tutti, ma aggiungendo): timestamp_timeout è in pochi minuti, può includere una componente frazionaria.
utente

3

Fai molta attenzione a modificare /etc/sudoersdirettamente!

Ad esempio, ho provato direttamente il suggerimento sopra:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

che ha incasinato il mio /etc/sudoersfile (su una VM Virtual Box CentOS). Avrebbe dovuto essere:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Fortunatamente, ho avuto accesso all'account di root, ho effettuato l'accesso come root, ho usato visudoe riparato il problema! Quindi, sono d'accordo con i commenti sopra da usare visudoinvece.


1

Tutte le informazioni per i sudoer possono essere trovate dal terminale con il comando

man sudoers

Puoi anche usare un semplice testo per modificare i file, tuttavia i priv rendono questo difficile. sudoers è-r--r----- (Octal 0440)

Ciò indica che Apple non vuole davvero che tu stia scherzando con il file. Questa è davvero la sicurezza principale del sistema operativo.

Le opzioni per l'editing sono vi, emacs o il mio BBEdit preferito personale.


5
C'è una ragione per cui questi privilegi sono stati impostati. Sono impostati nel tentativo di costringerti a utilizzare visudoinvece di modificare il file da solo. Inoltre, questo non ha nulla a che fare con OS X. È standard * nix. Inoltre, se si desidera utilizzare un editor non predefinito, è sufficiente impostare la $EDITORvariabile di ambiente prima di chiamare visudo. es EDITOR=nano sudo visudo.
daviewales,

1

Disabilita il timeout sudo con questo comando:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Per riattivare il timeout di sudo con questo metodo:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers

8
Dalla pagina man sudoers: il file sudoers deve sempre essere modificato dal comando visudo che blocca il file ed esegue il controllo grammaticale. È indispensabile che i sudoer siano privi di errori di sintassi poiché sudoer non verrà eseguito con un file di sudoers sintatticamente errato.
Matteo,

@Matteo Bene, puoi fare tutto ciò che ti piace sulla tua proprietà purché tu sia consapevole delle conseguenze. In alcune situazioni questo è OK, ad esempio lo uso su build di mac nuove che non contengono dati preziosi come parte di uno script di automazione. Ho suggerito una modifica a questa risposta per fornire un avviso. Idealmente sudodovrebbe avere un modo unico per cambiare questo senza dover modificare un file!
Samthebest,

1
Attenzione, questo è un consiglio pericoloso. Usa invece visudo.
Will Sheppard,
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.