Table des matières

Commande sudo – Fichier de configuration sudoers

Source : https://www.it-connect.fr/commande-sudo-comment-configurer-sudoers-sous-linux

Sous Debian.

Configurer le fichier “sudoers”, permet de déléguer des droits d'accès à un groupe/utilisateur spécifique pour certains fichiers, certaines commandes.

Compte “root” — le super-utilisateur de la machine, avec tous les droits, il sert à administrer et configurer le système.
Compte “utilisateur” membre du groupe “sudo” (dépend des distributions et du type d'installation) créé à l'installation.

Commande “sudo” (Substitute User DO) permet à un utilisateur standard d'exécuter une action en se faisant passer par un autre utilisateur, par défaut “root”.

id —ou— groups — Pour connaître les groupes de l’utilisateur : id utilisateur —ou— groups utilisateur

Droits du groupe "sudo" dans : /etc/sudoers

sudo nano /etc/sudoers

Éditeur “visudo” verrouille le fichier pour éviter des modifications de plusieurs utilisateurs simultanément, il vérifie la syntaxe des règles ajoutées ou modifiées.

sudo visudo /etc/sudoers

La syntaxe est précise :

1 seul utilisateur ou groupe par ligne.
Utilisateur/groupe : pour spécifier un utilisateur, on indique simplement son identifiant ; pour un groupe on ajoute le préfixe “%”.
Machines : ALL concerne toutes les machines. ➡ Utilisateurs : permet de spécifier l'utilisateur dont on prend les droits. “ALL” englobe tous les utilisateurs, y compris l'utilisateur “root”.
Groupes : idem pour les groupes.
Commandes : la ou les commandes que l'utilisateur (ou le groupe) peut exécuter sur la machine. S'il y a plusieurs commandes, il faut utiliser la virgule comme séparateur.

Donner des droits aux groupes et ajouter ensuite le(s) utilisateur(s) à ce groupe.

Ex. : Donner les droits à “utilisateur” pour éditer le fichier /etc/hosts via nano, en ajoutant :

“which” — Pour trouver le chemin vers le binaire, par exemple : which nano

“sudoers” supporte l'option “NOPASSWD”, qui permet d'indiquer que l'utilisateur peut exécuter cette commande sans devoir saisir son mot de passe. Ce n'est pas recommandé, mais c'est une possibilité.

"!" devant la commande pour l'interdire

Autoriser “utilisateur” à modifier les mots de passe des utilisateurs, sauf pour l'utilisateur “root”.

Comment utiliser la notion d'alias avec sudoers

Ces 3 sections au début du fichier sudoers, permettent de déclarer des alias pour les hôtes, les utilisateurs et les commandes.

Ex. : créer un alias d'utilisateurs “ADMINS” et y associer plusieurs utilisateurs. Ensuite, dans les règles on peut utiliser cet alias plutôt que d'appeler les utilisateurs un par un ou de créer un groupe spécifique si l'on veut créer une règle commune à plusieurs utilisateurs.

Prenons un exemple… On va créer un alias d'utilisateur nommé “ADMINS”, qui va faire référence à deux comptes : utilisateur1 et utilisateur2. Il faut séparer chaque nom par une virgule. Ce qui donne :

Ensuite, on déclare un alias de commande nommé “SYSTEM”, qui va faire référence à la commande “systemctl”, mais il pourrait contenir plusieurs commandes. Ce qui donne :

Enfin, pour créer une règle qui autorise les ADMINS à utiliser les commandes SYSTEM, cela donnera la règle suivante :

Les utilisateurs “utilisateur1” et “utilisateur2” peuvent désormais exécuter toutes les commandes associées à l'alias “SYSTEM”.

Dossier "/etc/sudoers.d"

“/etc/sudoers.d” sert à stocker des fichiers déclaratifs pour sudoers, ils seront lus en complément du fichier sudoers.
C'est intéressant pour organiser les règles par fichier plutôt que de tout centraliser dans le même fichier.
Le fichier sudoers sera toujours lu, dans tous les cas.
Attention, tous les fichiers qui contiennent “~” ou “.” dans le nom ne seront pas lus.

Pour créer un nouveau fichier nommé “ADMINS”, on utilisera :

visudo /etc/sudoers.d/ADMINS

On pourrait tout à fait inclure nos alias et notre règle créés précédemment au sein de ce fichier ADMINS :

Modifier le délai d'expiration de la commande sudo dans sudoers

En utilisant la commande sudo, l'accès reste déverrouillé pendant X minutes. Ce délai d'expiration (timeout) semble varier en fonction de la distribution utilisée, de 5 à 15 minutes.

Dans sudoers, à la suite des autres lignes “Defaults”, déclarez la ligne suivante :

.

PS : vous pouvez retrouver d'autres exemples (1) sur cette page : Exemples Sudoers (2).

(1) https://www.it-connect.fr/cours-tutoriels/administration-systemes/virtualisation/autres-virtu
(2) https://fossies.org/linux/sudo/examples/sudoers