Skip to main content

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é : sudo demande 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 sudo est 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

sudo [commande]

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 avec sudo.

  • sudo !! : Réexécute la dernière commande avec sudo.

  • 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