Les élévateurs de privilège (Privilege escalators) : sudo et doas
1. Origines et historique
sudo
- Origine : Développé initialement à la fin des années 1980 (vers 1980-1986) à l'Université SUNY/Buffalo, puis amélioré par de nombreux contributeurs.
- Signification : "superuser do" ou "substitute user do", selon les interprétations.
- Diffusion : Historiquement, sudo est rapidement devenu l'outil standard sur la plupart des systèmes Unix et dérivés (Linux, BSD, macOS, etc.) pour permettre l'exécution de commandes avec les privilèges du superutilisateur (root).
doas
- Origine : Développé dans l'écosystème OpenBSD, et intégré à partir d'OpenBSD 5.8 (publié en 2015).
- Signification : "do as", c'est-à-dire "faire en tant que [tel utilisateur]".
- Objectif : Fournir une alternative plus légère, plus simple et plus sécurisée (dans l'esprit OpenBSD) à sudo, qui est devenu très riche en fonctionnalités, donc parfois complexe.
2. À quoi servent-ils ?
Les deux outils permettent de lancer des commandes avec des privilèges différents de ceux de l'utilisateur courant, typiquement avec ceux de l'utilisateur root.
Plutôt que de se connecter directement en root (ou de faire un su - root), on préfère confier cette élévation de privilèges à un outil qui :
- Enregistre (journalise) qui a exécuté quoi et quand.
- Contrôle finement l'accès à des commandes spécifiques (via un fichier de configuration).
- Évite au maximum la connexion directe en root, réduisant ainsi les risques de fausses manipulations ou d'intrusions.
Dans un système bien configuré, vous pouvez autoriser un utilisateur ou un groupe d'utilisateurs à exécuter seulement certaines commandes en mode superutilisateur.
3. Fonctionnement général
sudo
- Fichier de configuration principal : /etc/sudoers (modifié idéalement avec visudo pour éviter les erreurs de syntaxe).
- Exemple d'utilisation :
sudo apt-get update
sudo reboot
ou pour basculer directement dans un shell root :
- Fonctionnalités notables :
- Possibilité de définir des règles complexes (limiter des commandes précises, définir des hôtes, des groupes, etc.).
- Gestion de mots de passe, de délais (timestamp) pour éviter de redemander le mot de passe trop souvent, etc.
- Large adoption et documentation.
doas
- Fichier de configuration principal : /etc/doas.conf
- Exemple d'utilisation :
ou :
pour lancer un shell avec privilèges élevés.
- Philosophie : Minimalisme et simplicité. La configuration de doas est généralement beaucoup plus courte qu'un fichier sudoers typique.
- Exemple de configuration :
permit :wheel
permit nopass :wheel cmd reboot
- Ici, tous les utilisateurs du groupe wheel peuvent utiliser doas, et ils peuvent exécuter reboot sans avoir à retaper leur mot de passe.
4. Avantages et inconvénients
Avantages de sudo
- Très largement adopté : Presque toutes les distributions Linux l'installent par défaut, et il est présent sur de nombreux Unix.
- Écosystème et documentation immenses : Articles, tutoriels, scripts existants, etc.
- Configuration très fine et puissante : Possibilité d'autoriser ou d'interdire telle commande, avec tel argument, pour tel utilisateur, sur tel hôte, etc.
- Audit et journalisation : Bien intégré dans les politiques de sécurité en entreprise.
Inconvénients de sudo
- Complexité : Le fichier sudoers peut devenir verbeux et difficile à maintenir dans des environnements complexes.
- Surface d'attaque plus grande : Beaucoup de code et de fonctionnalités => plus de risque de bugs ou de failles potentielles (même si sudo est globalement robuste).
- Historique de failles : Comme tout logiciel très répandu et ancien, il a déjà connu plusieurs vulnérabilités, même si elles ont été corrigées rapidement.
Avantages de doas
- Léger et simple : La configuration est volontairement minimaliste. Facile à lire, à maintenir et à comprendre.
- Sécuritaire : Le projet OpenBSD a la réputation d'examiner et d'auditer son code plus que la moyenne, centrée sur la sécurité. Pour rappel OpenSSH est issu d'OpenBSD !
- Moins verbeux : De nombreux cas d'usage courants sont couverts avec très peu de lignes dans /etc/doas.conf.
Inconvénients de doas
- Moins de fonctionnalités avancées : Si vous avez besoin de configurations extrêmement précises ou complexes, vous risquez de manquer de flexibilité par rapport à sudo.
- Moins répandu : Par défaut, toutes les distributions Linux n'intègrent pas doas. Vous devrez peut-être l'installer vous-même et adapter votre écosystème (documentation, scripts d'automatisation, etc.).
- Moins de support "officiel" : Dans certains environnements professionnels, la standardisation se fait souvent autour de sudo. doas est plus répandu dans les cercles BSD ou chez les utilisateurs recherchant la simplicité absolue.
5. Lequel privilégier aujourd'hui (en 2025) ?
- sudo reste la solution la plus universelle et la plus "indolore" : vous trouverez de l'aide partout, et il est présent par défaut sur la plupart des distributions Linux. Dans le monde professionnel, les entreprises et les services IT sont souvent "verrouillés" sur sudo, avec des politiques de sécurité déjà établies.
- doas est un excellent choix si :
- Vous utilisez OpenBSD (où il est d'ailleurs installé par défaut).
- Vous recherchez un outil minimal, plus facile à configurer et auditer, et que vos besoins en règles d'accès ne sont pas ultra-complexes.
- Vous êtes prêt à l'installer manuellement sur votre distribution Linux, à adapter vos habitudes et potentiellement votre documentation/scripting.
En 2025, on observe que doas a gagné un certain terrain, notamment dans quelques distributions Linux qui le proposent parfois dans leurs dépôts officiels, mais sudo demeure l'outil standard et de facto incontournable.
6. Autres alternatives
- su : La commande "historique" pour changer d'utilisateur (su -) et donc passer root. Mais elle n'offre pas la granularité de sudo/doas (on ne peut pas autoriser seulement certaines commandes). On l'utilise souvent en complément ("su - user"), mais pour une gestion fine des droits, sudo/doas sont préférés.
- pkexec (PolicyKit) : Fourni avec Polkit (PolicyKit), souvent utilisé dans les environnements de bureau (GNOME/KDE) pour autoriser des actions administratives par interface graphique (installation de mises à jour, changement de certains paramètres). Il peut aussi s'employer en CLI via la commande pkexec, mais on reste sur un usage plus orienté desktop.
- Approches "RBAC" (Role-Based Access Control) : Certaines distributions (par ex. Solaris) proposent des systèmes RBAC complexes en complément ou en remplacement de sudo. C'est plus orienté entreprise ou environnements ayant besoin d'une gestion granulaire des rôles.
- Autres implémentations custom : Dans des entreprises, il existe parfois des wrappers ou solutions tierces (ex. "pbrun", ou solutions maison) permettant d'encapsuler la gestion des privilèges. C'est moins fréquent dans un contexte grand public.
7. Conclusion
- sudo : le "standard de facto", complet, universel, largement documenté, idéal pour la plupart des besoins (particuliers et professionnels), malgré un certain trop-plein de fonctionnalités pour des cas simples.
- doas : la version "minimaliste" et sécurisée, héritée d'OpenBSD, qui fait très bien le travail pour des configurations simples et lisibles, mais moins flexible et moins largement adoptée.
Aujourd'hui, si vous gérez un parc hétérogène, il est probable que sudo vous facilite la vie.
Pour une utilisation personnelle ou dans un environnement homogène (OpenBSD ou autre distribution qui pousse doas), vous pouvez sans problème adopter doas et profiter de sa légèreté et de sa configuration succincte.
Si vous cherchez une solution graphique ou plus intégrée à un environnement de bureau, alors jetez un oeil à PolicyKit et pkexec. Pour des environnements d'entreprise avec gestion complexe des rôles et journalisation, sudo (voire des extensions RBAC) reste la solution la plus commune.
En résumé, rien n'empêche d'installer et d'utiliser doas sur un système Linux, mais gardez à l'esprit que sudo est toujours la référence pour la majorité des cas et le plus simple à prendre en main si vous recherchez la compatibilité et la documentation abondante.