Comment l'utilisateur ubuntu
sur les images AWS pour Ubuntu Server 12.04 a-t-il un mot de passe Sudo
pour toutes les commandes alors qu'il n'y a pas de configuration pour cela 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 veux Sudo
sans mot de passe pour ce nouvel utilisateur.
J'ai donc ajouté un nouvel utilisateur et suis allé éditer /etc/sudoers
(en utilisant visudo bien sûr). À la lecture de ce fichier, il semblait que l'utilisateur ubuntu
par défaut obtenait le nom sans mot de passe Sudo
de son appartenance au groupe admin
name__. J'ai donc ajouté mon nouvel utilisateur à cela. Ce qui n'a pas fonctionné. Ensuite, j'ai essayé d'ajouter la directive NOPASSWD
à sudoers
name__. Ce qui n'a pas fonctionné non plus.
Quoi qu'il en soit, maintenant je suis juste curieux. Comment l’utilisateur ubuntu
obtient-il des privilèges sans mot de passe s’ils ne sont pas définis dans /etc/sudoers
. Quel est le mécanisme qui permet cela?
OK, j’ai découvert la réponse, alors aussi bien la mettre ici pour plus de précision. À la fin de /etc/sudoers
il y a ce que je pensais être juste un commentaire:
#includedir /etc/sudoers.d
Cependant, cela inclut en fait le contenu de ce répertoire. À l'intérieur de celui-ci 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
Voilà donc où réside la configuration Sudo pour l'utilisateur Ubuntu par défaut.
Vous devriez éditer ce fichier en utilisant visudo. La commande suivante vous permettra d’éditer 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.
J'ai constaté que la chose la plus simple à faire pour répliquer facilement ce problème sur plusieurs serveurs était la suivante:
Sudo visudo
Changer 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
puis pour chaque utilisateur ayant besoin d’un accès Sudo AVEC un mot de passe :
Sudo adduser <user> Sudo
et pour chaque utilisateur ayant besoin d’un accès Sudo SANS mot de passe :
Sudo adduser <user> admin
et enfin, lancez ceci:
Sudo service Sudo restart
Et c'est tout!
Edit: Vous devrez peut-être ajouter le groupe d'administrateurs 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
Remarque: Comme @ hata est mentionné, vous devrez peut-être utiliser adm
comme nom de groupe d'administrateur, en fonction de la version d'Ubuntu utilisée.
Je créerais mon propre fichier dans le répertoire /etc/sudoers.d/ - le fichier créé par Amazon Cloud pourrait être écrasé en cas de mise à jour. Après avoir créé votre fichier dans /etc/sudoers.d, ajoutez cette entrée,
<your user name> ALL=(ALL) NOPASSWD:ALL
Redémarrez le système et cela fonctionnera.
Réponse courte sans utiliser d’éditeur (testé sur bash, très risqué d’être exécuté 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 simplement l'essayer avec:
Sudo <anything>