veilletech.fr
4 nov. Feed du jour
#09 LINUX Article

Ubuntu 26.04 : sudo-rs refuse les jokers d'arguments

Une mise à niveau peut changer le sens de vos règles sans rien dire.

Sur Ubuntu 26.04, sudo est sudo-rs, et sa page de manuel indique qu'il interdit les jokers dans les arguments de commande, sauf une étoile finale. Un administrateur a vu une règle sudoers.d pour exim -bp[acru] cesser d'autoriser les variantes -bpa, -bpc, -bpr et -bpu, la règle étant lue comme un argument littéral. Il est revenu au sudo classique avec update-alternatives.

2 min de lectureintermédiairevidéo 1:19
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Le cas concret
  3. Comment s'y prendre
  4. À retenir

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 :

TEXT
%corestaff ALL=NOPASSWD: /usr/bin/mailq "", \
                         /usr/sbin/exim -bp, \
                         /usr/sbin/exim -bp[acru]

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

  1. Avant de passer des serveurs à 26.04, chercher dans /etc/sudoers et /etc/sudoers.d/* toute règle qui met un joker (*, ?, [...]) dans un argument de commande.
  2. Tester ces règles avec sudo-rs sur une machine d'essai.
  3. Pour revenir au sudo classique, l'auteur a lancé, sur toutes ses machines 26.04 :
Terminal
update-alternatives --set sudo /usr/bin/sudo.ws

Dé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.