Ce qui se passe
Sur Ubuntu 26.04, la commande sudo est sudo-rs, une réécriture en Rust. Un administrateur système a constaté le
2 novembre que ses règles du dossier /etc/sudoers.d ne s'appliquaient plus comme prévu, sans trace dans les journaux.
Sa cause : sudo-rs ne gère pas les jokers dans les arguments de commande.
Le billet est un témoignage personnel, très critique envers Canonical, et son auteur n'a pas déposé de bogue. Le fait
qui compte est vérifiable dans la documentation : la page de manuel de sudo-rs précise que les jokers dans les
arguments de ligne de commande ne sont pas pris en charge, et que le seul usage admis est une * en dernier argument,
pour « zéro ou plusieurs arguments suivants ».
Le cas concret
La règle de l'auteur autorise un groupe à lancer mailq et certaines formes de exim sans mot de passe :
%corestaff ALL=NOPASSWD: /usr/bin/mailq "", \
/usr/sbin/exim -bp, \
/usr/sbin/exim -bp[acru]- Avec le sudo classique, la dernière ligne autorise
exim -bpa,-bpc,-bpret-bpu. - Avec sudo-rs, elle autorise seulement l'argument littéral
-bp[acru], crochets compris, qu'Exim rejette comme option inconnue.
Conséquence : une règle écrite pour être étroite peut cesser de s'appliquer après le passage à 26.04, alors que l'étoile finale, la plus large des formes admises, reste permise. Le reproche de l'auteur est que cette différence est dite en toute fin d'une section de la page de manuel, sans alerte au début.
Comment s'y prendre
- Avant de passer des serveurs à 26.04, chercher dans
/etc/sudoerset/etc/sudoers.d/*toute règle qui met un joker (*,?,[...]) dans un argument de commande. - Tester ces règles avec sudo-rs sur une machine d'essai.
- Pour revenir au sudo classique, l'auteur a lancé, sur toutes ses machines 26.04 :
update-alternatives --set sudo /usr/bin/sudo.wsDésinstaller sudo-rs entraîne aussi le retrait du paquet ubuntu-minimal, ce que l'auteur n'a pas voulu tenter.
Il désactive de la même façon les coreutils en Rust dans son installateur, sujet distinct de ce billet.
Source : blog de Chris Siebenmann, en anglais. Le billet est un avis personnel ; seule la phrase de la page de manuel de sudo-rs est ici tenue pour établie.