Un système Linux est configuré avec un compte root possédant tous les droits sur le système et généralement un compte utilisateur membre du groupe sudo, dont le nom est défini à l’installation.
Le fichier /etc/sudoers
sert à déléguer des droits pour exécuter certaines actions sur la machine.
Attention aux modifications car il est possible en cas d’erreur de perdre les accès administrateur de la machine.
Editeur de texte recommandé
Il est fortement recommandé d’utiliser l’éditeur de texte visudo
pour modifier le fichier /etc/sudoers
car il le verouille lorsqu’un utilisateur s’en sert (pour éviter les modifications à plusieurs) et vérifie sa syntaxe.
Fichier /etc/sudoers
Note : La modification peut directement se faire dans /etc/sudoers
mais dans beaucoup de distribution l’utilisation de /etc/sudoers.d/
est préférable.
Fichier /etc/sudoers
de base (sur une debian 11.2 (bullseye))
# |
Ce fichier se compose de 2 sections : “Default” et “User privilege”
Section Default
Toutes les lignes de la section “Default” débutent par Defaults
La configuration de base est :
Defaults env_reset
- Réinitialise l’environnement du terminal pour supprimer les variables utilisateur pouvant être potentiellement dangereuses
Defaults mail_badpass
- Le système envoie par mail les tentatives échouée de connexion en sudo à root (configurer le
mailto
pour changer de destinataire)
- Le système envoie par mail les tentatives échouée de connexion en sudo à root (configurer le
Defaults secure_path
- Emplacements du système de fichiers pour exécuter les commande sudo (pour ne pas prendre les binaires utilisateurs)
Il existe d’autres directives, dont la plus célèbre est de se faire insulter par le terminal en cas d’erreur de mot de passe : https://www.geeksforgeeks.org/when-sudo-insults-you/
Section User Privilege
Cette section sert à déclarer les accès aux commandes pour un utilisateur ou groupe.
Dans le fichier de base nous avons :
root ALL=(ALL:ALL) ALL |
En d’autres termes root et %sudo (désigne le groupe sudo) ont accès à toutes les commandes du système.
Syntaxe
La syntaxe du fichier pour la section User Privilege est :
Utilisateur/%groupe hôte=(utilisateur:groupe) /chemin/commande |
Dans ces deux exemples :
root ALL=(ALL:ALL) ALL |
L’utilisateur root et le groupe %sudo sont configurés comme tel :
- hôte →
ALL
: la règle s’applique à tous les hôtes - utilisateur →
ALL
: le ou les utilisateur(s) dont on prend les droits - %groupe →
ALL
: le ou les groupe(s) dont on prend les droits - commande →
ALL
: le ou les commande(s) que utilisateur ou %groupe peut exécuter
Pour configurer (pour le groupe ou l’utilisateur en question) plusieurs utilisateurs, groupes ou commandes, etc. la séparation se fait avec une virgule :
user ALL=(user1, user2, user3 : groupe5, groupe6) /chemin/commande1, /chemin/commande42 |
Configurer le fichier /etc/sudoers
Dossier /etc/sudoers.d
Le dossier /etc/sudoers.d
sert à stocker les fichiers de configuration qui seront ensuite lu par /etc/sudoers
. Pour créer une nouvelle règle, il suffit de créer un fichier dans le répertoire.
# visudo /etc/sudoers.d/ADMINS |
Alias
Il est possible de créer des alias de d’hôtes, d’utilisateurs ou de commandes
# Création de groupes d'utilisateurs |
Exemple : On autorise au groupe JUNIOR d’utiliser la commande apt-get
et on précise que kevin doit uniquement utiliser la commande update
sur le sandbox mais vanessa peut l’utiliser de partout :
JUNIORS ALL = UPDATE |
No Password
On peut autoriser des utilisateurs à utiliser des commande sans demande de mot de passe grâce à NOPASSWD
:
apache ALL=(ALL) NOPASSWD: /usr/sbin/apachectl |
Exclusion avec ‘!’
Spécifier ‘!’ permet d’exclure une commande, ici l’utilisatrice yennefer peut modifier les mots de passe des autres sauf pour root.
yennefer ALL=(ALL) /usr/bin/passwd, !/usr/bin/passwd root |
Délai d’expiration
Pour modifier le temps d’expiration du mot de passe pour la commande sudo
(en minute):
Defaults timestamp_timeout=5 |
Exemple de fichier
Exemple de fichier
# |
Documentation
Manuel sudoers
https://fossies.org/linux/sudo/examples/sudoers
https://www.malekal.com/sudo-comment-utiliser-configurer-sudoers-linux/
https://www.softpanorama.org/Access_control/Sudo/sudoer_file_examples.shtml
https://www.it-connect.fr/commande-sudo-comment-configurer-sudoers-sous-linux/
https://www.security-helpzone.com/2019/09/21/linux-ajouter-un-utilisateur-dans-le-fichier-sudoers/
https://www.computerhope.com/unix/visudo.htm
https://www.geeksforgeeks.org/when-sudo-insults-you/
https://www.real-world-systems.com/docs/sudoers.5.html
https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file