Aller au contenu

sudo : superuser do (aussi lu « substitute user do »)

Sécurité

Commande Unix et Linux qui permet à un utilisateur autorisé d'exécuter une commande sous l'identité d'un autre compte, root le plus souvent, en s'authentifiant avec son propre mot de passe. Chaque élévation passe par des règles déclarées à l'avance et laisse une trace dans les journaux.

Schéma de séquence entre six acteurs : Utilisateur, sudo, sudoers, PAM, Commande et Journal. 1, l'utilisateur transmet à sudo la commande à exécuter. 2, sudo demande à sudoers s'il existe une règle pour cet utilisateur et cette commande. 3, s'il n'y a aucune règle, sudoers renvoie un refus et une entrée dans le journal. Si une règle est trouvée : 4, sudo fait vérifier le mot de passe de l'utilisateur par PAM, puis 5, s'il est authentifié, exécute la commande sous le compte cible. 6, sudo inscrit dans le journal qui a lancé quoi.

Fonctionnement : sudo consulte /etc/sudoers (et /etc/sudoers.d) pour savoir si tel utilisateur peut lancer telle commande sous tel compte. Il demande ensuite le mot de passe de l'utilisateur, jamais celui de root (c'est toute la différence avec su), puis garde l'authentification en cache quelques minutes (15 par défaut, par terminal).

Délégation fine : Les règles peuvent limiter l'élévation à quelques commandes précises plutôt qu'au shell entier, et chaque appel part dans syslog ou journald. Une règle NOPASSWD: ALL ramène tout ce dispositif à un root partagé avec une étape de plus. Elle est toujours posée « en attendant », et se retrouve toujours en place à l'audit suivant.

Édition des règles : On modifie sudoers uniquement avec visudo, qui verrouille le fichier et vérifie la syntaxe avant d'enregistrer. Une faute de frappe enregistrée à la main bloque sudo pour tout le monde, administrateur compris : il reste le mot de passe de root, que l'on avait justement cessé de connaître.

Piège classique : Dans « sudo commande > fichier », c'est le shell de l'utilisateur qui fait la redirection, sans aucun privilège. Pour écrire dans un fichier protégé, on passe par « commande | sudo tee fichier ».

Ce qui arrive si on s'en passe

Sans sudo, l'administration repose sur une connexion directe en root ou sur un mot de passe root partagé (via su). Toutes les actions privilégiées apparaissent alors sous une seule identité : les journaux n'indiquent plus qui a lancé quelle commande, et l'analyse après un incident perd son point d'appui. Le moindre besoin ponctuel (redémarrer un service, lire un journal protégé) donne les pleins pouvoirs, faute de règles qui limitent les commandes autorisées. Retirer l'accès d'une seule personne impose de changer le secret commun et de le transmettre de nouveau à toutes les autres. Si la connexion root reste ouverte à distance, un attaquant connaît d'avance le nom du compte à viser : il ne lui reste qu'un mot de passe à deviner pour obtenir le contrôle total de la machine.

Explication de la marmotte

Sur un ordinateur, certaines actions sont risquées : installer un programme, changer des réglages profonds, effacer des fichiers dont la machine a besoin pour fonctionner. Pour éviter les catastrophes, on ne travaille pas tous les jours avec les pleins pouvoirs. sudo, c'est comme demander la clé passe-partout au gardien du lycée. Tu donnes ton propre mot de passe. Le gardien vérifie sur sa liste que tu as le droit d'ouvrir cette salle-là. Il te prête la clé pour cette seule action, puis il note dans son cahier qui a ouvert quoi et à quelle heure. Si ton nom n'est pas sur la liste, la porte reste fermée, et le refus est noté aussi.

Où ce terme est utilisé

← Tout le glossaire