Aperçu de sudo
Sur les systèmes Linux, l'utilisateur root possède tous les privilèges. Cependant, effectuer toutes les tâches en tant que root présente des risques de causer des dommages catastrophiques au système par inadvertance. `sudo` est un mécanisme de sécurité important qui accorde temporairement aux utilisateurs ordinaires les privilèges administratifs nécessaires, permettant ainsi une gestion du système tout en minimisant les risques de sécurité.
Fonctionnement de sudo
`sudo` demande le mot de passe de l'utilisateur (qui n'est pas celui de root) lorsque la commande `sudo` est exécutée, et si ce mot de passe est correct, il exécute la commande avec les privilèges de root ou d'un autre utilisateur conformément aux règles définies dans le fichier `sudoers`. Une fois authentifié, l'utilisateur peut utiliser `sudo` sans avoir à ressaisir son mot de passe pendant un certain temps (par défaut 5 minutes).
Principales fonctions de sudo
- **Renforcement de la sécurité** : Réduit les risques de sécurité en évitant les connexions inutiles avec le compte root.
- **Suivi des responsabilités** : Toutes les commandes exécutées via `sudo` sont enregistrées dans des logs, ce qui permet de suivre qui a exécuté quelle commande d'administration et à quel moment.
- **Contrôle des privilèges granulaire** : Le fichier `sudoers` permet de contrôler finement quels utilisateurs ou groupes peuvent exécuter certaines commandes avec des privilèges root.
- **Atténuation de la saisie du mot de passe** : Une fois authentifié, l'utilisateur peut utiliser `sudo` sans mot de passe pendant un certain temps, ce qui est pratique.
🔑 Fichier sudoers
/etc/sudoers
Tous les paramètres de privilège de `sudo` sont définis dans le fichier `/etc/sudoers`. Ce fichier est très sensible, donc **il doit absolument être édité avec la commande `visudo`.** `visudo` vérifie automatiquement les erreurs de syntaxe pour éviter que des paramètres incorrects ne désactivent la fonction `sudo`.
Options principales de la commande sudo
La commande `sudo` permet de contrôler la manière dont elle s'exécute grâce à diverses options, en plus d'élever les privilèges.
1. Utilisation de base
2. Options liées à l'utilisateur et au shell
3. Options liées à l'authentification et à la liste
Commande générée :
Essayez de combiner les commandes.
Description:
`sudo` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Configuration du fichier sudoers (utiliser visudo)
`sudo` les privilèges sont contrôlés par le fichier `/etc/sudoers`. Au lieu de modifier ce fichier directement, vous devez utiliser la commande `visudo` pour l'éditer en toute sécurité. `visudo` vérifie les erreurs de syntaxe pour éviter de casser la fonction `sudo`.
Éditer le fichier sudoers
sudo visudo
Éditez le fichier `sudoers` en toute sécurité avec des privilèges root. L'éditeur par défaut peut être `vi`.
Format général du fichier sudoers
Les entrées du fichier `sudoers` sont définies au format `User Host=(RunAs) NOPASSWD: Command`. La configuration la plus courante est d'accorder des privilèges `sudo` pour toutes les commandes à un utilisateur appartenant à un groupe spécifique.
Exemples de configuration
Voici des exemples de configurations que l'on peut souvent trouver dans le fichier `sudoers`.
- `%sudo ALL=(ALL:ALL) ALL`: Autorise tous les utilisateurs appartenant au groupe `sudo`, depuis n'importe quel hôte (ALL), à exécuter toutes les commandes (ALL) avec les privilèges de tous les utilisateurs (ALL). (Mot de passe requis)
- `username ALL=(ALL) NOPASSWD: /usr/bin/apt update`: Autorise l'utilisateur `username` à exécuter la commande `apt update` avec des privilèges root sans avoir à saisir de mot de passe.
Exemples d'utilisation
Apprenez à effectuer des tâches système avec des privilèges administratifs à travers divers exemples d'utilisation de la commande `sudo`.
Mise à jour des paquets système
sudo apt update
La commande pour mettre à jour la liste des paquets du système nécessite des privilèges administratifs, donc `sudo` est utilisé.
Copier un fichier dans un répertoire spécifique
sudo cp my_config.conf /etc/
Copie le fichier `my_config.conf` dans le répertoire `/etc/`, où l'écriture n'est généralement pas autorisée.
Exécuter une commande en tant qu'un autre utilisateur
sudo -u www-data ls /var/www/html
Exécute la commande `ls /var/www/html` avec les privilèges de l'utilisateur `www-data` (généralement le processus du serveur web) pour tester les permissions d'accès aux fichiers de cet utilisateur.
Passer à un shell root
sudo -i
Entrez le mot de passe de l'utilisateur actuel pour obtenir un shell complètement basculé dans l'environnement de l'utilisateur root. Une fois le travail terminé, vous pouvez revenir à l'utilisateur d'origine en saisissant `exit`.
Vérifier les privilèges sudo de l'utilisateur actuel
sudo -l
Vérifiez quelles commandes l'utilisateur actuellement connecté peut exécuter via `sudo`, et si un mot de passe est requis.