Comment Utiliser Sudo et le Fichier Sudoers ?

La commande sudo permet aux utilisateurs non root d’exécuter d’autres commandes Linux qui nécessiteraient normalement des privilèges de super utilisateur, tandis que le fichier sudoers indique au système comment gérer la commande sudo. Dans ce tutoriel, nous vous montrerons les bases de la commande sudo et comment éditer le fichier sudoers.

Comprendre Sudo

Pour montrer comment fonctionne sudo, accédez d’abord à votre VPS via SSH.

Par défaut, l’ utilisateur root n’a pas besoin d’utiliser le préfixe sudo. Il dispose déjà de tous les privilèges possibles. En revanche, si un utilisateur non root souhaite ajouter un autre utilisateur, il doit ajouter le préfixe sudo à la commande useradd, comme suit :

sudo useradd edward

Si l’utilisateur n’utilise pas le préfixe sudo, il recevra un message de refus de permission.

Le dossier Sudoers

La commande sudo est configurée par le biais d’un fichier situé dans /etc/ appelé sudoers.

Grâce à la commande sudo, vous accordez des privilèges de niveau administratif à des utilisateurs ordinaires.  Normalement, le premier utilisateur que vous créez lors de l’installation d’Ubuntu a les droits sudo. Dans un environnement VPS, il s’agit de l’utilisateur racine par défaut. Vous pouvez configurer d’autres utilisateurs pour qu’ils puissent également exécuter la commande sudo. Cela peut être fait en éditant sudoers.

Important ! Notez que des erreurs ou une mauvaise syntaxe dans votre fichier sudoers peuvent entraîner le verrouillage de tous les utilisateurs de votre distribution.

Syntaxe du fichier Sudoers

Vous pouvez ouvrir le fichier avec votre éditeur de texte préféré. Nous utiliserons vi :

vi /etc/sudoers

Le fichier de notre VPS ressemble à ceci :

Examinons quelques-uns des formats et des règles à respecter lors de l’édition de sudoers :

  • Toutes les lignes commençant par # sont des commentaires, sauf si le symbole fait partie des directives #include ou #includedir.
  • root ALL=(ALL:ALL) ALL – cette ligne signifie que l’utilisateur root a des privilèges illimités et peut exécuter n’importe quelle commande sur le système.
  • %admin ALL=(ALL) ALL – le signe % indique un groupe. Toute personne appartenant au groupe admin a les mêmes privilèges que l’utilisateur root.
  • %sudo ALL=(ALL:ALL) ALL – tous les utilisateurs du groupe sudo ont le droit d’exécuter n’importe quelle commande.

Une autre ligne intéressante est #includedir /etc/sudoers.d, ce qui signifie que nous pouvons ajouter des configurations au fichier sudoers.d et le lier ici.

Modification du fichier Sudoers

Pour modifier le fichier /etc/sudoers, utilisez la commande suivante :

sudo visudo -f /etc/sudoers

Il est recommandé d’utiliser visudo pour éditer le fichier sudoers. Visudo s’assure que sudoers est édité par un seul utilisateur à la fois et fournit les vérifications syntaxiques nécessaires.

Pour voir quels utilisateurs font partie du groupe sudo, nous pouvons utiliser la commande grep :

grep ‘sudo’ /etc/group

La liste des noms d’utilisateurs s’affiche.

Pour ajouter un utilisateur appelé bill au groupe sudo, nous utilisons la commande adduser dans la ligne de commande, comme suit :

adduser bill sudo

Si nous utilisons la commande grep pour vérifier qui est dans le groupe, nous verrons le nom d’utilisateur bill.

Si vous voulez donner à quelqu’un les privilèges de la racine, il suffit de l’ajouter à sudo.

Pour supprimer un utilisateur de sudo :

deluser bill sudo

La commande deluser supprime bill du groupe sudo.

Désormais, l’utilisateur bill ne peut plus effectuer d’actions nécessitant des privilèges sudo.

Utiliser le fichier Sudoers pour accorder des privilèges spécifiques

Que se passe-t-il si nous voulons que Bill ne puisse exécuter que certains types de commandes avec les privilèges sudo, comme la mise en réseau ?

Pour ce faire, nous créons un fichier de configuration dans /etc/sudoers.d/ appelé networking.

Utilisez la commande suivante pour créer le fichier :

sudo visudo -f /etc/sudoers.d/networking

Ajouter le texte suivant dans le fichier :

Cmnd_Alias     CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Exécutez ensuite la commande :

addgroup netadmin

Dans le fichier ci-dessus, nous avons créé un groupe netadmin. Les utilisateurs du groupe netadmin peuvent exécuter les commandes spécifiées dans NETALL. NETALL comprend à son tour toutes les commandes sous les alias CAPTURE et SERVERS. La commande tcpdump se trouve sous l’alias CAPTURE, c’est-à-dire /usr/sbin/tcpdump.

Ensuite, nous ajoutons l’utilisateur bill au groupe netadmin :

sudo adduser bill netadmin

Désormais, l’utilisateur bill pourra exécuter la commande tcpdump ainsi que d’autres commandes liées au réseau.

Conclusion

Si vous travaillez avec plusieurs utilisateurs, il est indispensable de comprendre la commande sudo et le fichier sudoers. Dans ce tutoriel, vous avez appris toutes les bases pour prendre le contrôle des privilèges de votre système !

Author
L'auteur

Chaimaa Chakir

Chaimaa est une spécialiste du référencement et du marketing de contenu chez Hostinger. Elle est passionnée par le marketing digital et la technologie. Elle espère aider les gens à résoudre leurs problèmes et à réussir en ligne. Chaimaa est une cinéphile qui adore les chats et l'analyse des films.