Domanda Come eseguire il comando sudo senza password?


Come fa il ubuntu l'utente sulle immagini AWS per Ubuntu Server 12.04 ha password sudo per tutti i comandi quando non ci sono configurazioni in esso /etc/sudoers?

Sto usando il server Ubuntu 12.04 su Amazon. Voglio aggiungere un nuovo utente che abbia lo stesso comportamento dell'utente di Ubuntu predefinito. Specificamente voglio passwordless sudo per questo nuovo utente.

Quindi ho aggiunto un nuovo utente e sono andato a modificare /etc/sudoers (usando visudo ovviamente). Dalla lettura di quel file sembrava il default ubuntu l'utente stava ottenendo è senza password sudo dall'essere un membro del admin gruppo. Quindi ho aggiunto il mio nuovo utente a quello. Che non ha funzionato Poi ho provato ad aggiungere il NOPASSWD direttiva a sudoers. Che anche non ha funzionato.

Ad ogni modo, ora sono solo curioso. Come fa il ubuntu l'utente ottiene i privilegi senza password se non sono definiti in /etc/sudoers. Qual è il meccanismo che consente questo?


199
2017-09-23 09:30


origine


Relazionato: Esegui sudo senza password? - Eliah Kagan


risposte:


Ok, ho scoperto la risposta, quindi potrebbe anche metterlo qui per completezza. Alla fine di /etc/sudoers c'è quello che pensavo fosse solo un commento:

#includedir /etc/sudoers.d

Tuttavia questo in realtà include i contenuti di quella directory. All'interno del quale è presente il file /etc/sudoers.d/90-cloudimg-ubuntu. Quale ha i contenuti attesi

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


292
2017-09-23 10:27



Sono abbastanza sicuro di dover eseguire un riavvio completo. - aychedee
nuove regole sudo verranno utilizzate per ogni nuovo utente registrato, quindi è necessario effettuare il login almeno - bluszcz
'sudo service sudo restart' funziona :) - Laice
Nelle versioni successive (14.04 per esempio) il file incluso è /etc/sudoers.d/90-cloud-init-users (quindi per modificare .. sudo visudo -f /etc/sudoers.d/90-cloud-init-users). Anche se sarebbe più pulito creare file aggiuntivi rispetto alla modifica di quello generato. Si noti che i file contenenti a . o finendo in ~volere non essere incluso. - Molomby
@ Phil_1984_ Molto probabilmente, è stato aggiunto come commento per consentire la compatibilità con altre versioni (standard?) Di sudo, che non consentono l'inclusione, ma che non dovrebbero essere tralasciate da un commento strano. (Gli standard sono difficili! ;-) - jpaugh


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 linea:

# 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 Con una password:

sudo adduser <user> sudo

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

sudo adduser <user> admin

e infine, esegui questo:

sudo service sudo restart

E questo è tutto!

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

sudo groupadd admin

Puoi anche aggiungere l'AWS predefinito ubuntu utente al admin gruppo tramite questo comando:

sudo usermod ubuntu -g admin

77
2018-04-03 21:45



Nota per sé: è una convenzione per spostare le autorizzazioni meno restrittive in basso nello stack. Ma non farlo non influirà sulla funzionalità. - poweratom
Come ha spiegato Jiminikiz, ho dovuto inserire il % di amministrazione dopo il sudo% sulla mia Ubuntu GNOME 16.04 LTS. Inoltre, l'id del gruppo degli amministratori non lo è Admin ma adm sulla mia Ubuntu. Non è stato necessario riavviare. - hata


Risposta breve senza l'uso di 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

Controlla la modifica con:

sudo visudo -c

Verifica se puoi usare sudo senza password:

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

... o semplicemente provalo con:

sudo <Nulla>

-1
2017-08-13 22:25



Questo è un consiglio piuttosto pericoloso ... copia e incolla questo errore e ti chiuderai fuori dal tuo server. Da qui il consiglio di usare visudo. Controlla che la sintassi sia corretta prima di salvare su disco. Quindi, per chiunque voglia usare questo. Non farlo su un server remoto che ti interessa. Potresti voler includere un avvertimento a riguardo nella tua risposta. - aychedee
Non usare il visudo è un orribile idea. Fidati di me, lo so. - Bailey S
IMHO, una copia-incolla è più sicura di una modifica manuale. Una piccola semplificazione: echo "$USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers - theartofrain
@theartofrain - Normalmente, sarei d'accordo, ma visudo è particolarmente piacevole non permettendoti di rompere il file sudoers, quindi non ti blocchi dalla tua macchina (o almeno sudo). - Jon V
@ JonV È possibile perdere i diritti di amministratore tramite visudo anche, ma di solito non per caso, perché visudo salva solo i cambiamenti che sono ben formati in base a la grammatica per i file sudoers. Maggior parte gli errori sono sintatticamente sbagliati, quindi non causano danni visudo. Se /etc/sudoers o un file in /etc/sudoers.d  è mal formati, sudo rifiuta di elevare i privilegi per chiunque come misura di sicurezza, motivo per cui non lo usa visudo è pericoloso. (Anche se a volte pkexec può ripararlo senza un riavvio.) - Eliah Kagan