“sudo”, en quelques mots par un exemple

closeCet article a été publié il y a 16 ans 9 mois 17 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Petite introduction rapide et minimaliste à « sudo » pour pouvoir faire les apt-get update/upgrade du matin depuis un compte standard (non-root), sans faire un « su » à chaque fois. Il s’agit à travers cet exemple de montrer le B-A.BA de « sudo ».

D’abord, l’installer :

apt-get install sudo

Ensuite, il faut paramétrer le fichier « /etc/sudoers » (sudoers <=> ceux qui peuvent faire du sudo).
Afin de garantir le bon état de ce fichier, il est recommandé/obligatoire d’utiliser la commande « visudo » (appelée depuis n’importe où et sans argument), commande qui pose un verrou sur le fichier.

Voici un exemple commenté permettant d’autoriser un groupe d’utilisateurs non-root à faire notamment un « apt-get xxx » sans avoir à être root (disons, à connaître son mot de passe et/ou devoir se logger root).

Attention, une étourderie dans ce fichier et c’est la porte ouverte au n’importe quoi.

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#            ^^^^ puisque je vous le disais !
# See the man page for details on how to write a sudoers file.
#

User_Alias      ADMINS = mon_compte, manu, larcenet
# On crée un groupe ADMINS qui contient quelques utilisateurs qui auront des autorisation particulières

Host_Alias      LOC = localhost, 127.0.0.1, mon_hostname, un_alias
# On crée un groupe de machines depuis lesquelles on autorisera le lancement de telle ou telle commande

Cmnd_Alias      REBOOT_AND_CO = /sbin/halt, \
                                /sbin/shutdown, \
                                /sbin/reboot
# On crée un premier groupe de commandes
# Le \ sert à indiquer que le groupe continue sur la ligne suivante. La virgule marque la fin de la commande autorisée.

Cmnd_Alias      APTGET = /usr/bin/apt-get
# Un autre groupe de commande

Cmnd_Alias      DIVERS = /usr/sbin/iftop
# Encore un

ADMINS          LOC = NOPASSWD: APTGET
# Les utilisateurs du groupe ADMINS peuvent lancer depuis les machines du groupe LOC les commandes du groupe APTGET sans avoir besoin de mot de passe. Voyez la doc pour tous les mots-clefs possibles.

ADMINS          LOC = NOPASSWD: DIVERS

# User privilege specification
root    ALL=(ALL) ALL
# Et le root peut tout faire depuis n'importe où

Il faut noter que lorsqu’on déclare une commande, exemple APT-GET = /usr/bin/apt-get, ça sous-entend « tout ce qui commence textuellement par apt-get. Vous pourriez restreindre par exemple avec ça :

Cmnd_Alias APTGET_RESTREINT = /usr/bin/apt-get install

Pigé ? Bon, ben yapuka.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.