Come eseguire il comando sudo senza password?

208

In che modo l' ubuntu utente sulle immagini AWS per Ubuntu Server 12.04 ha un sudo senza password per tutti i comandi quando non c'è alcuna configurazione per esso in /etc/sudoers ?

Uso il server Ubuntu 12.04 su Amazon. Voglio aggiungere un nuovo utente che abbia lo stesso comportamento dell'utente di Ubuntu predefinito. Specificamente voglio% senza password% co_de per questo nuovo utente.

Quindi ho aggiunto un nuovo utente e sono andato a modificare sudo (usando visudo ovviamente). Dalla lettura di quel file sembrava che l'utente /etc/sudoers predefinito ottenesse il suo% senza password% co_de da membro del gruppo ubuntu . Quindi ho aggiunto il mio nuovo utente a quello. Che non ha funzionato Poi ho provato ad aggiungere la direttiva sudo a admin . Che anche non ha funzionato.

Ad ogni modo, ora sono solo curioso. In che modo NOPASSWD utente ottiene i privilegi senza password se non sono definiti in sudoers . Qual è il meccanismo che consente questo?

    
posta aychedee 23.09.2012 - 11:30

3 risposte

302

Okay, ho scoperto la risposta, quindi potrei metterla qui per completezza. Alla fine di /etc/sudoers c'è quello che pensavo fosse solo un commento:

#includedir /etc/sudoers.d

Tuttavia questo include in realtà il contenuto di quella directory. All'interno del quale è presente il file %codice%. Quale ha i contenuti previsti

# ubuntu user is default user in cloud-images.
# It needs passwordless sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL

Ecco dove si trova la configurazione sudo per l'utente di Ubuntu predefinito.

Dovresti modificare questo file usando visudo. Il seguente comando ti permetterà di modificare il file corretto con visudo.

sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu

E aggiungi una riga come:

aychedee ALL=(ALL) NOPASSWD:ALL

Alla fine.

    
risposta data aychedee 23.09.2012 - 12:27
79

Ho scoperto che la cosa più semplice da fare, al fine di replicare facilmente questo comportamento su più server, era la seguente:

sudo visudo

Cambia questa linea:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) ALL

a questa linea:

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

E spostalo sotto questa riga:

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

ora dovresti avere questo:

# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin  ALL=(ALL) NOPASSWD:ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

quindi per ogni utente che ha bisogno di accesso sudo WITH a password :

sudo adduser <user> sudo

e per ogni utente che ha bisogno di accesso sudo WITH NO password :

sudo adduser <user> admin

e infine esegui questo:

sudo service sudo restart

E questo è tutto!

Modifica: potrebbe essere necessario aggiungere il gruppo di amministratori poiché non penso esista per impostazione predefinita.

sudo groupadd admin

Puoi anche aggiungere l'% di AWS ubuntu al gruppo admin tramite questo comando:

sudo usermod ubuntu -g admin

Nota. Come indicato @hata , potresti dover utilizzare adm come nome del tuo gruppo di amministratori, a seconda di quale versione di Ubuntu è in uso.

    
risposta data jiminikiz 03.04.2014 - 23:45
-1

Risposta breve senza utilizzare alcun editor (testato su bash, molto rischioso da eseguire su host remoti).

Configura sudo per funzionare senza password per l'utente corrente:

echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers

Verifica la modifica con:

sudo visudo -c

Verifica se puoi usare sudo senza password:

sudo cat /etc/sudoers | grep "$USER"

... o semplicemente provalo con:

sudo <anything>
    
risposta data user315445 14.08.2014 - 00:25

Leggi altre domande sui tag