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.
Sommaire
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 !