Comment exécuter la commande sudo sans mot de passe?

198

Comment l'utilisateur ubuntu sur les images AWS pour Ubuntu Server 12.04 dispose-t-il de sans mot de passe sudo pour toutes les commandes lorsqu'il n'y a pas de configuration dans /etc/sudoers ?

J'utilise le serveur Ubuntu 12.04 sur Amazon. Je souhaite ajouter un nouvel utilisateur ayant le même comportement que l'utilisateur par défaut d'Ubuntu. Plus précisément, je souhaite utiliser sans mot de passe sudo pour ce nouvel utilisateur.

J'ai donc ajouté un nouvel utilisateur et suis allé modifier /etc/sudoers (en utilisant bien sûr visudo). En lisant ce fichier, il semblait que l'utilisateur par défaut de ubuntu obtenait son mot de passe sudo de membre du groupe admin . J'ai donc ajouté mon nouvel utilisateur à cela. Ce qui n'a pas fonctionné Ensuite, j'ai essayé d'ajouter la directive NOPASSWD à sudoers . Ce qui aussi n'a pas fonctionné.

Quoi qu’il en soit, je suis juste curieux. Comment l'utilisateur ubuntu obtient-il des privilèges sans mot de passe s'il n'est pas défini dans /etc/sudoers . Quel est le mécanisme qui permet cela?

    
posée aychedee 23.09.2012 - 11:30
la source

3 réponses

288

Bon, j'ai découvert la réponse, aussi bien le mettre ici pour être complet. À la fin de /etc/sudoers , il y a ce que je pensais être juste un commentaire:

#includedir /etc/sudoers.d

Cependant, cela inclut effectivement le contenu de ce répertoire. À l'intérieur duquel se trouve le fichier /etc/sudoers.d/90-cloudimg-ubuntu . Qui a le contenu attendu

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

C'est donc là que réside la configuration de sudo pour l'utilisateur par défaut d'ubuntu.

Vous devriez éditer ce fichier en utilisant visudo. La commande suivante vous permettra de modifier le fichier correct avec visudo.

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

Et ajoutez une ligne comme:

aychedee ALL=(ALL) NOPASSWD:ALL

À la fin.

    
réponse donnée aychedee 23.09.2012 - 12:27
la source
73

J'ai trouvé que la chose la plus simple à faire pour reproduire facilement ce comportement sur plusieurs serveurs était la suivante:

sudo visudo

Changez cette ligne:

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

à cette ligne:

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

Et déplacez-le sous cette ligne:

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

vous devriez maintenant avoir ceci:

# 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

alors pour chaque utilisateur ayant besoin d'un accès sudo avec un mot de passe :

sudo adduser <user> sudo

et pour chaque utilisateur nécessitant un accès sudo SANS mot de passe :

sudo adduser <user> admin

et enfin, lancez ceci:

sudo service sudo restart

Et c'est tout!

Modifier: il se peut que vous deviez ajouter le groupe d’administration, car je ne pense pas qu’il existe par défaut.

sudo groupadd admin

Vous pouvez également ajouter l'utilisateur AWS ubuntu par défaut au groupe admin via cette commande:

sudo usermod ubuntu -g admin
    
réponse donnée jiminikiz 03.04.2014 - 23:45
la source
-1

Réponse courte sans utiliser d’éditeur (testé sur bash, très risqué à exécuter sur des hôtes distants).

Configurez sudo pour qu'il fonctionne sans mot de passe pour l'utilisateur actuel:

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

Vérifiez l’édition avec:

sudo visudo -c

Vérifiez si vous pouvez utiliser sudo sans mot de passe:

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

... ou essayez-le simplement avec:

sudo <anything>
    
réponse donnée user315445 14.08.2014 - 00:25
la source

Lire d'autres questions sur les étiquettes