Outils pour utilisateurs

Outils du site


wiki:systeme:sudo_sudoers

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
  • # User privilege specification
  • root    ALL=(ALL:ALL) ALL
  • # Allow members of group sudo to execute any command
  • %sudo   ALL=(ALL:ALL) ALL

É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 :

  • sudo ALL=(ALL:ALL) ALL
  • utilisateur/%groupe machines=(utilisateurs:groupes) commandes

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 :

  • utilisateur ALL=(ALL) /usr/bin/nano /etc/hosts

“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é.

  • utilisateur ALL=(ALL) NOPASSWD:/usr/bin/nano /etc/hosts

"!" devant la commande pour l'interdire

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

  • utilisateur ALL=(ALL) /usr/bin/passwd, !/usr/bin/passwd 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.

  • # Host alias specification
  • # User alias specification
  • # Cmnd_alias specification

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 :

  • User_Alias    ADMINS = utilisateur1, utilisateur2

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 :

  • Cmnd_Alias    SYSTEM = /usr/bin/systemctl

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

  • ADMINS ALL=(ALL)   SYSTEM

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 :

  • User_Alias ADMINS = itconect,florian
  • Cmnd_Alias SYSTEM = usrbin/systemctl
  • ADMINS ALL=(ALL) SYSTEM

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 :

  • Defaults      timestamp_timeout=5

.

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

wiki/systeme/sudo_sudoers.txt · Dernière modification: 2021/05/02 17:28 de palas