Esegui sudo senza password?

241

Ispirato da questa domanda ....

Sono l'unica persona che utilizza il mio sistema con 12.04.
Ogni volta che rilascio un comando sudo ; il sistema richiede la password dell'utente (che a suo modo è buona).
Comunque stavo pensando; senza attivare l'account root ; come posso eseguire i comandi sudo che non richiedono la password dell'utente per l'autenticazione.

NOTA: voglio eseguire il comando sudo senza autenticazione tramite password; solo quando sono eseguiti tramite terminale.
Non voglio rimuovere questo ulteriore livello di sicurezza da altre funzioni durante l'uso di 'Ubuntu software center' o l'esecuzione di uno script bash trascinando il file something.sh sul terminale.

    
posta Z9iT 06.06.2012 - 14:30

8 risposte

68

sudo -i è la strada da percorrere se non vuoi digitare una password ogni 10 minuti mentre esegui modifiche nel tuo sistema (o in altri sistemi) e non vuoi modificare alcun file di sistema.

Passa alla root usando la tua password utente sudo , quando chiudi la console o digiti exit torni al tuo normale utente.

    
risposta data Bruno Pereira 06.06.2012 - 15:36
475

L'approccio per risolvere il tuo problema è quello di mettere il tuo utente nel file sudoers, come puoi vedere.

Apri la finestra del terminale e digita:

sudo visudo

Nella parte inferiore del file, digita quanto segue:

$USER ALL=(ALL) NOPASSWD: ALL

Dove $USER è il tuo nome utente nel tuo sistema. Salva e chiudi il file sudoers (se non hai cambiato l'editor di terminale predefinito (saprai se ce l'hai), premi ctl + x per uscire da nano (ma nota che lo screenshot qui sotto mostra vim ), e ti verrà chiesto di salvare).

]

Dopoquesto,puoi,nellafinestradelterminale,digitaresudo<Whateveryouwant>,senzachevengarichiestalapassword.

Siapplicasoloalcomandosudonellafinestradelterminale.Adesempio,quandositentadiinstallareunpacchettonelcentrosoftware,verràrichiestodiinserirelapassword,comesipuòvederenelprossimoScreenshot.

Penso che questo sia quello che vuoi.

    
risposta data Octávio Filipe Gonçalves 06.06.2012 - 15:20
33

I timeout sudo root sono il modo più semplice e sicuro per farlo. Descriverò tutti gli esempi ma ti avverto che è molto rischioso in qualsiasi modo tu lo faccia anche se in questo modo è molto più sicuro:

sudo visudo

Questo apre un editor e lo indirizza al file sudoers - Ubuntu imposta automaticamente nano, altri sistemi usano Vi. Ora sei un super user che modifica uno dei file più importanti sul tuo sistema. Nessuno stress!

(Vi sono istruzioni specifiche annotate con (vi!) . Ignorali se usi nano.)

Utilizza i tasti freccia per spostarti alla fine della riga Defaults .

(vi!) premi il tasto A (maiuscola "a") per spostarti alla fine della riga corrente e inserisci la modalità di modifica (aggiungi dopo l'ultimo carattere sulla linea).

Adesso scrivi:

,timestamp_timeout=X

dove X è la scadenza del timeout in minuti. Se si specifica 0, verrà sempre richiesta la password. Se specifichi un valore negativo, il timeout non scadrà mai. E.g. % Co_de%.

(vi!) premi Esc per tornare alla modalità di comando. Ora, se sei soddisfatto della tua modifica, digita Defaults env_reset,timestamp_timeout=5 Invio per scrivere il file e :w Invio per uscire da vi. Se hai commesso un errore, forse il modo più semplice è quello di ripetere dall'inizio, di uscire senza salvare (premere Escape per entrare in modalità comando) e quindi digitare: q! Invio .

Premi Ctrl + X , quindi Y , quindi Invio per salvare il file e uscire da nano.

Potresti voler leggere i sudoers e le pagine di manuale di vi per ulteriori informazioni.

man sudoers
man vi

Ripristina il valore di timeout usando:

sudo -k

Queste istruzioni servono a rimuovere la richiesta di una password quando si usa il comando sudo. Il comando sudo dovrà comunque essere utilizzato per l'accesso root.

Modifica il file sudoers

Apri una finestra di Terminale. Digita :q . Aggiungi la seguente riga alla FINE del file (se non alla fine può essere annullata da voci successive):

<username> ALL=NOPASSWD: ALL

Sostituisci sudo visudo con il tuo nome utente (senza <username> ). Ciò presuppone che Ubuntu abbia creato un gruppo con lo stesso nome del tuo nome utente, che è tipico. Puoi alternativamente utilizzare gli utenti del gruppo o qualsiasi altro gruppo in cui ti trovi. Assicurati di essere in quel gruppo. Questo può essere verificato andando su Sistema - & gt; Amministrazione - & gt; Utenti e gruppi.

Esempio:

michael ALL=NOPASSWD: ALL

Digita ^ X ( Ctrl + X ) per uscire. Questo dovrebbe richiedere un'opzione per salvare il file, digitare Y per salvare.

Esci, quindi riaccedi. Ora dovrebbe consentire di eseguire il comando sudo senza richiedere una password.

L'account root

Abilitazione dell'account root

Raramente è necessario abilitare l'account root. Quasi tutto ciò che devi fare come amministratore di un sistema Ubuntu può essere fatto tramite sudo o gksudo. Se hai veramente bisogno di un login root persistente, l'alternativa migliore è simulare una shell di login Root usando il seguente comando:

sudo -i

Tuttavia, se devi abilitare i login di root, puoi farlo in questo modo:

sudo passwd root

Riattiva il tuo account root

Se per qualche motivo hai abilitato il tuo account root e desideri disattivarlo nuovamente, usa il seguente comando nel terminale:

sudo passwd -dl root

Gruppo sudo a livello di sistema

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

Esci, quindi torna indietro.

Ripristina timeout sudo

Puoi assicurarti che sudo chieda la password la prossima volta eseguendo:

sudo -k
    
risposta data user209328 30.10.2013 - 02:15
11

Il modo migliore per concedere autorizzazioni individuali (o di gruppo) è aggiungere file sotto /etc/sudoers.d

Questo separa le modifiche locali dalla politica di default e fa risparmiare tempo nel caso in cui il file sudoers della distribuzione cambi.

Ad esempio:

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

Renderà molto chiaro a quali utenti viene concessa l'autorizzazione.

Allo stesso modo, è possibile utilizzare un file per gestire più direttive:

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

Vedi /etc/sudoers.d/README per ulteriori informazioni.

    
risposta data user1656671 01.02.2017 - 16:54
6

Nice one-liner per rimuovere prompt sudo per l'utente corrente

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
    
risposta data Eric Landry 27.06.2016 - 19:50
4

Ovviamente ciò che si vuole fare non è raccomandato. Dopo un po ', l'immissione di sudo diventa così automatica che la sua utilità diminuisce.

Un altro approccio è quello di lasciare il file sudoers così com'è e, mentre fai qualcosa di complicato ai tuoi mille mille server, inserisci sudo bash . Questo ti darà una shell che verrà autenticata come root finché non la esci.

    
risposta data John S Gruber 06.06.2012 - 15:27
1

Da Super User arriva una buona risposta:

Utilizza l'opzione -S che legge la password da STDIN:

echo <password> | sudo -S <command>

Sostituisci <password> con la tua password.

    
risposta data WinEunuuchs2Unix 17.05.2018 - 02:12
0

Questa è una soluzione a una riga che cambia anche i permessi dei file come indicato in /etc/sudoer.d/README :

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & sudo chmod 440 $(logname)
    
risposta data 14.11.2018 - 17:39

Leggi altre domande sui tag