Adoption de sudo-rs par défaut dans Ubuntu 25.10
Introduction
Suite à la publication de
Carefully But Purposefully Oxidising Ubuntu, Ubuntu sera la première distribution Linux majeure à adopter sudo-rs comme implémentation par défaut de sudo, en partenariat avec la Trifecta Tech Foundation.
Le changement sera effectif à partir de la sortie d'Ubuntu 25.10.
Qu'est-ce que sudo-rs ?
sudo-rs est une réimplémentation de l'outil sudo traditionnel, écrit en Rust. Il est développé par la Trifecta Tech Foundation (TTF), une organisation à but non lucratif qui se concentre sur la construction de composants d'infrastructure sécurisés et open source. Le projet fait partie de l'initiative Privilege Boundary de la Trifecta Tech Foundation, qui vise à gérer l'escalade des privilèges à l'aide d'alternatives sûres pour la mémoire.
La commande sudo a longtemps servi de moyen défacto d'escalade des privilèges sous Linux. Comme décrit dans le billet original, Rust fournit de fortes garanties contre certaines classes de problèmes de sécurité de la mémoire, ce qui est essentiel pour les composants à la limite des privilèges.
L'équipe sudo-rs collabore avec Todd Miller, qui maintient le sudo original depuis plus de trente ans. sudo-rs ne doit pas être considéré comme une bifurcation, mais plutôt comme une poignée de main entre plusieurs générations de systèmes sécurisés. Tout au long du développement de sudo-rs, l'équipe TTF a également contribué à l'amélioration de l'implémentation originale de sudo.
Le projet sudo-rs est conçu pour remplacer l'outil original. Pour la grande majorité des utilisateurs, la mise à jour devrait être complètement transparente pour leur flux de travail. Cela dit, sudo-rs n'est pas une réimplémentation « aveugle ». Les développeurs ont adopté une approche « moins, c'est plus ». Cela signifie que certaines fonctionnalités de la version originale de sudo peuvent ne pas être réimplémentées si elles ne servent qu'une niche, ou si elles sont considérées comme des pratiques « dépassées ».
Erik Jonkers, président de la Trifecta Tech Foundation, explique : "
Bien qu'aucun logiciel - quel que soit le langage - ne soit parfait, nous pensons que la transition vers Rust dans la programmation des systèmes est un pas en avant vital, et il est très excitant de voir Ubuntu s'engager en faveur de sudo-rs et prendre les devants pour faire avancer les choses."
Sponsoriser l'adoption par le grand public
L'adoption par le grand public d'un substitut à un outil aussi universellement connu s'accompagne de responsabilités. Avant de s'engager à livrer sudo-rs dans Ubuntu 26.04 LTS, nous testerons la transition dans Ubuntu 25.10. Nous sponsorisons également le développement de certains éléments spécifiques, qui se sont manifestés en tant que jalon 5 dans le projet en amont :
- Prévention des évasions de shell à gros grain (NOEXEC) sur Linux
- La possibilité de contrôler les profils AppArmor
- Une implémentation de sudoedit
- La prise en charge des noyaux Linux antérieurs à la version 5.9
Le dernier point peut sembler déplacé, mais comme Ubuntu 20.04 LTS est toujours supporté, sans ce travail, il pourrait y avoir des situations où sudo ne fonctionnerait pas si, par exemple, un conteneur OCI 26.04 LTS était exécuté sur un hôte 20.04 LTS !
L'équipe a également déjà commencé à travailler pour s'assurer que la suite de tests est aussi compatible que possible avec Ubuntu, afin de s'assurer que tout problème soit détecté rapidement.
Il ne s'agit pas seulement de livrer un nouveau binaire. Il s'agit de définir une direction. Nous n'abandonnons pas le C, ni même ne réécrivons tous les utilitaires nous-mêmes, mais en choisissant de remplacer l'un des outils les plus critiques pour la sécurité du système par une alternative sûre pour la mémoire, nous faisons une déclaration : la résilience et la durabilité ne sont pas optionnelles dans l'avenir de l'infrastructure ouverte.
Progrès de coreutils
Depuis l'annonce initiale, nous avons travaillé dur pour définir plus clairement un plan de migration vers uutils
coreutils dans la version 25.10 et au-delà. De la même manière que nous nous sommes engagés avec la Trifecta Tech Foundation, nous sponsorisons également le projet uutils pour nous assurer que certaines lacunes clés sont comblées avant la livraison de la version 25.10. Le parrainage couvrira principalement le développement du support SELinux pour les commandes courantes telles que
mv,
ls,
cp, etc.
La première étape du développement du support SELinux a été d'ajouter le support des tests automatisés dans Github Actions, depuis lors les mainteneurs ont commencé à travailler sur l'implémentation réelle.
L'autre fonctionnalité que nous sponsorisons est la prise en charge de l'internationalisation. Actuellement, certaines implémentations d'utilitaires (comme
sort) ont une compréhension incomplète des locales, et peuvent donc produire des résultats inattendus. Nous espérons que ces deux fonctionnalités seront disponibles à temps pour la version 25.10, et nous continuerons à travailler avec le projet uutils tout au long du cycle 26.04 LTS afin de combler les lacunes que nous aurons identifiées dans la version intermédiaire.
L'une des principales préoccupations soulignées dans le billet de Julian concerne la taille des binaires. Nous avons quelques astuces pour réduire cette taille, et des discussions ont déjà été entamées en amont dans Debian sur la manière d'y parvenir. Il y a aussi des implications de sécurité, comme le manque de support d'AppArmor pour les binaires multi-appels. Nous travaillons actuellement avec les amonts respectifs pour discuter de la résolution systématique de ce problème, mais dans l'intervalle, nous pourrions avoir besoin de construire de petits binaires enveloppants pour permettre la compatibilité avec les profils AppArmor existants dès le départ.
Mécanismes de migration
Julian Klode a posté récemment sur le Discourse Ubuntu un plan d'empaquetage qui nous permettra à la fois de migrer de manière transparente vers uutils
coreutils, mais aussi de fournir un moyen pratique pour les utilisateurs de se retirer et de revenir à GNU
coreutils s'ils le souhaitent, ou s'ils identifient une lacune dans la nouvelle implémentation. Je m'attends à ce que cela soit rare, mais nous voulons nous assurer qu'il est aussi facile que possible de revenir en arrière, et nous documenterons cela en détail avant la publication.
Remplacer coreutils n'est pas aussi simple que d'échanger les binaires. En tant que paquet
Essential, son remplacement doit fonctionner immédiatement au déballage sans dépendre des scripts du mainteneur, et sans conflit de fichiers entre les paquets. Pour résoudre ce problème, nous introduisons de nouveaux paquets
coreutils-from-utils et
coreutils-from-gnu, ainsi que
coreutils-from lui-même.
Le travail d'empaquetage nécessaire pour passer à
sudo-rs est un peu moins compliqué qu'avec
coreutils. Le paquet est déjà disponible dans Ubuntu (que vous pouvez toujours tester sur Ubuntu 24.04, 24.10 et 25.04 avec oxidizr 5 !), mais contrairement à
coreutils,
sudo n'est pas un paquet
Essential, nous pourrons donc utiliser le système Debian alternatives pour la transition.
Résumé
Les choses avancent bien. Nous avons établi des relations solides et productives et nous sponsorisons le travail en amont pour rendre ces transitions viables.
Nous avons une stratégie pour migrer l'implémentation par défaut de
coreutils et de
sudo dans Ubuntu 25.10, ce qui permettra un retour en arrière transparent dans les cas où cela est souhaité. Alors que
sudo-rs sera l'implémentation par défaut dans la version 25.10, le
sudo original restera disponible pour les utilisateurs qui en ont besoin, et nous recueillerons des commentaires pour assurer une transition en douceur avant la version 26.04 LTS.
De plus, nous avons commencé à étudier la faisabilité de fournir SequoiaPGP et de l'utiliser dans APT à la place de GnuPG. SequoiaPGP est une nouvelle bibliothèque OpenPGP qui met l'accent sur la sécurité et la correction, écrite en Rust. Les mainteneurs de GnuPG ont récemment bifurqué vers le standard OpenPGP et ne sont plus en conformité avec celui-ci. Sequoia fournit une alternative moderne à GnuPG avec un comportement strict, et est déjà utilisé dans plusieurs autres systèmes. Plus de détails à venir !
Restez à l'écoute !
Partager