Run0 : un outil de Systemd v256 pour remplacer sudo ?

Par:
fredericmazue

ven, 10/05/2024 - 16:00

Lennart Poettering est un important contributateur Linux, connu notamment pour avoir conçu Systemd, un système qui est venu remplacer les anciens scripts SysVInit pour le démarrage du système. Le moins que l'on puisse est qu'avant son adaption, Systemd a suscité la controverse et même de violentes polémiques. En résumé, le principal reproche fait à Systemd est qu'il abandonne la philosophie KISS des systèmes UNIX et donc Linux.

KISS, pour Keep It Simple and Stupid, veut qu'un outil soit aussi simple que possible, qu'il ne fasse qu'une seule chose et la fasse bien. Le fait est que Systemd est un système complexe et sans doute parce qu'il est complexe, on y a détecté des failles de sécurité alors que l'on n'en trouvait pas beaucoup dans les scripts SysV init.

Lennart Poettering récidive en voulant supprimer sudo, la célèbre commande qui permet à un administrateur système d'accorder à certains utilisateurs (ou groupes d'utilisateurs) la possibilité de lancer une commande en tant qu'administrateur, ou en tant qu'autre utilisateur, tout en conservant une trace des commandes saisies et des arguments passés.

Lennart Poettring détaille ses idées dans une suite de posts sur Mastodont :

Sudo a cependant de sérieux problèmes. Il s'agit d'un binaire SUID relativement volumineux, c'est-à-dire du code privilégié que les utilisateurs non privilégiés peuvent invoquer depuis leur propre contexte. Il a un langage de configuration compliqué, des plugins chargeables […] Les processus SUID sont des concepts étranges : ils sont invoqués par du code non privilégié et héritent du contexte d'exécution prévu et contrôlé par du code non privilégié […] Donc, dans mon monde idéal, nous aurions un système d’exploitation entièrement sans SUID. […] Avec systemd v256, nous faisons un pas dans cette direction. Il existe un nouvel outil dans systemd, appelé "run0". Ou en fait, ce n'est pas un nouvel outil, c'est en fait l'outil existant depuis longtemps "systemd-run", mais lorsqu'il est invoqué sous le nom "run0" (via un lien symbolique), il se comporte un peu comme un clone sudo. Mais avec une différence clé : ce n'est *pas* en fait SUID. Au lieu de cela, il demande simplement au gestionnaire de services d'appeler une commande ou un shell sous l’UID de l’utilisateur cible. Il alloue un nouveau PTY pour cela, puis déplace les données entre le TTY d'origine et ce PTY.

Nul doute que cette publication de Lennart Poettring, parfois surnommé " la plus grande primadonna que FOSS ait jamais connue" va susciter une nouvelle polémique. Sa proposition sera-t-elle finalement adoptée ? L'avenir nous le dira.