Machines
sudo est installé sur toutes les machines.
On a choisi de ne pas utiliser le compte root
, et préféré
un compte utilisateur par administrateur.
Configuration
Le fichier /etc/sudoers
n'a généralement pas à être édité. Il est
préférable d'ajouter des fichiers dans /etc/sudoers.d
en utilisant
la commande :
sudo visudo -f /etc/sudoers.d/nom_du_fichier
Les modifications décrites ici ont été faites en grande partie pour des questions d'ergonomie, plus rarement pour des raisons de sécurité, mais quelques fois pour les deux à la fois.
/etc/sudoers.d/00 defaults
Defaults passwd_timeout=1
Defaults passwd_tries=2
- Ces deux paramètres sont limitatifs par rapport aux réglages par défaut. Ils servent surtout à embêter les users peu concentrées.
Defaults requiretty
- Interdit l'exécution de la commande sudo à partir d'autre chose qu'une console ou un terminal, notamment à partir de scripts cron ou cgi-bin. Plusieurs des fichiers sudoers suivants consistent à apporter des exceptions à ce paramètre.
Defaults use_pty
- Fait que sudo s'exécutera dans un pseudo-terminal dédié qui sera fermé à la fin de l'exécution de la commande, ce qui rend impossible l'exécution d'un programme malicieux en tâche de fond dans le terminal d'où a été invoquée la commande.
Defaults !tty_tickets
Defaults timestamp_timeout=5
- Le premier paramètre permet à l'user de ne pas avoir à s'authentifier
lors de l'invocation de sudo dans un terminal si elle vient de le faire dans
un autre. Cela rend plus souple l'utilisation conjointe de sudo et de
screen (ou tmux), mais peut requérir de revoir à la
baisse la durée de validité d'une authentification (
timestamp_timeout
), dont la valeur par défaut est de 15 minutes. Defaults timestampdir=/run/sudo/ts
Defaults lecture_status_dir=/run/sudo/lectured
Defaults lecture_file=/etc/sudoers.d/rebooted.warn
- Tant que le paramètre
lecture
conserve sa valeur par défaut (once
), le stockage des horodatages sur un système de fichiers temporaire permet de se rendre compte assez vite (dès la première invocation de sudo) qu'un redémarrage du système a eu lieu, en affichant un avertissement. Il est alors envisageable (c'est ce qui a été fait ici) de modifier le paramètrelecture_file
pour afficher, à la place de l'avertissement par défaut, et même en couleurs, une série d'instructions (mesures à prendre, logs à consulter, qui contacter, etc).
NOTE : le choix d'un système de fichiers temporaire pour stocker les cookies de lecture va à l'encontre de la recommandation de la page de manuel. Defaults env_keep+="HOME"
Defaults env_keep+="SSH_TTY SSH_CLIENT SSH_CONNECTION"
- Ces variables sont conservées dans l'environnement de sudo. Le cas de
HOME est particulier en raison de ses effets de bord. Par exemple,
sudo etckeeper commit
utilisera (s'ils existent) les fichiers.gitconfig
et.vimrc
de l'user plutôt que ceux de root (s'ils existent) ou ceux du système. La contrepartie, c'est que des fichiers possédés par root peuvent aussi être créés dans ce même répertoire; cependant, il est possible de ne pas tenir compte de ce paramètre (env_keep+="HOME"
) en appelant sudo avec l'option-H
. Ce paramètre a été ajouté parce qu'il n'existe aucune option permettant à l'user de n'exporter que cette variable : l'option-E
, qui les exporte toutes ou presque, est fortement déconseillée pour des raisons de sécurité.
/etc/sudoers.d/01 nopasswd
Ce fichier indique à sudo quels groupes peuvent utiliser quelles commandes sans avoir à s'authentifier.
Groupe sudo
etckeeper unclean
etckeeper vcs status
etckeeper vcs log
etckeeper vcs log -p
etckeeper vcs diff
/etc/sudoers.d/02 gestion-adh
Ce fichier permet à l'user wiki-ca
de gérer la
liste e-mail ag@nos-oignons.net
.
Defaults:wiki-ca !requiretty
- Ce paramètre surcharge celui que l'on trouve dans
00_defaults
justement pour permettre à cet user de lancer certaines commandes (sans mot de passe) depuis un script cron.
Le reste du fichier concerne la liste de commandes que l'user wiki-ca
pourra utiliser en tant qu'user list
sans avoir à s'authentifier :
list_members ag
add_members -r - ag
remove_members -f - ag
Autres exceptions à requiretty
/etc/sudoers.d/03_compta
- Ce fichier permet au groupe
wiki-ca
de lancer un hook d'ikiwiki en tant qu'userwebsite
pour rafraîchir le site web. /etc/sudoers.d/04_awstats
- Ce fichier permet à root de provoquer la mise à jour des pages de
statistiques du site en tant qu'user
awstats
avant la rotation des logs du serveur web. /etc/sudoers.d/05_acmetool
- Ce fichier permet à l'user
acme
de mettre à jour le certificat du site web avant expiration.
/etc/sudoers.d/rebooted.warn
Fichier dont le contenu sera donné à lire à l'user à la place de l'avertissement par défaut.
Ce fichier n'est pas à proprement parler un fichier de configuration de
sudo ; s'il a pu être placé dans /etc/sudoers.d
sans interférer avec la
commande sudo, c'est parce que son nom contient un point.