SUDO
La commande sudo (abréviation de Super User DO) est un outil essentiel sous Linux qui permet à un utilisateur autorisé d'exécuter des commandes avec des privilèges élevés, généralement ceux du superutilisateur (root). Voici un résumé complet mais concis pour votre wiki.
Fonctionnement de sudo
-
Objectif : Permettre à des utilisateurs spécifiques d'exécuter des commandes nécessitant des privilèges administratifs sans se connecter directement en tant que root.
-
Sécurité :
sudodemande l'authentification avec le mot de passe de l'utilisateur courant (et non celui de root), limitant ainsi les risques liés au partage du mot de passe root. -
Durée : Une session
sudoest valide pendant une période définie (15 minutes par défaut), après quoi le mot de passe doit être saisi à nouveau.
Syntaxe de base
Exemple :
sudo apt update
Cela exécute la commande apt update avec les privilèges administratifs.
Options utiles
-
sudo -u [utilisateur] [commande]: Exécute une commande en tant qu'un autre utilisateur.-
Exemple :
sudo -u john ls /home/john
-
-
sudo -l: Liste les commandes que l'utilisateur peut exécuter avecsudo. -
sudo !!: Réexécute la dernière commande avecsudo. -
sudo -k: Invalide les privilèges actifs et force une nouvelle authentification. -
sudo -v: Valide ou renouvelle les privilèges sans exécuter de commande. -
sudo -s: Lance un shell interactif avec les privilèges actuels. -
sudo -i: Simule une connexion initiale en tant que root.
Configuration via le fichier sudoers
La gestion des permissions se fait dans le fichier /etc/sudoers. Il est recommandé d'utiliser la commande sécurisée visudo pour éditer ce fichier afin d'éviter les erreurs de syntaxe.
Exemple d'entrée dans sudoers :
-
# Autoriser un utilisateur à tout faire sans mot de passe : john ALL=(ALL) NOPASSWD: ALL
-
# Autoriser un groupe pour certaines commandes : %developers ALL=(ALL) /usr/bin/apt-get, /usr/bin/dpkg
-
# Limiter un utilisateur à des commandes spécifiques en tant qu'un autre utilisateur : jane ALL=(webuser) /usr/bin/systemctl restart apache2
-
# Autoriser un utilisateur sur des hôtes spécifiques : tom SERVER1,SERVER2=(ALL) ALL
-
# Définir et utiliser un alias de commande : Cmnd_Alias SERVICES = /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl restartoperator ALL=(root) SERVICES
-
# Autoriser un groupe à tout faire sauf certaines commandes : %admins ALL=(ALL) ALL, !/usr/bin/su, !/usr/bin/passwd
-
# Définir et utiliser un alias d'utilisateur : User_Alias WEBMASTERS = alice, bob, charlieWEBMASTERS ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl restart php-fpm
-
# Autoriser un utilisateur à tout faire, mais sans mot de passe pour certaines commandes : sarah ALL=(ALL) ALL, NOPASSWD: /sbin/reboot, /sbin/shutdown
D'autres commandes utiles :
Ajouter un utilisateur au groupe sudo :
sudo usermod -aG sudo username
Redémarrer un service :
sudo systemctl restart apache2