Archives par étiquette : systemd

Linux : Gnome moderne et véloce sur un vieux PC avec Devuan

Vous avez un vieux PC, qui tourne sous Ubuntu, et vous constatez que, version après version, Ubuntu est de plus en plus lent. Vous êtes pourtant contraint de migrer car la durée de vie des versions d’Ubuntu, même LTS, est finalement assez courte.

Au final, années après années, votre PC sous Ubuntu devient plus lent, limite presqu’inutilisable maintenant tellement c’est lent.

Le problème n’est pas l’interface Gnome, qui deviendrait de plus en plus gourmande en ressources au fil de ses versions, mais systemd.

Pour comprendre ce qu’est systemd, il faut revenir aux origines du monde Unix, basé sur la philosophie KISS (Keep It Simple, Stupid), c’est à dire basé sur des briques logicielles simples, ne faisant qu’une chose mais la faisant de manière excellente.

L’exemple type est la commande Unix « sort« , qui permet de trier ce qu’on lui donne en entrée. Quel que soit votre talent, si vous programmez vous-même une fonction de tri, elle sera assurément moins performante que le programme sort. Pour une bonne et simple raison : il y a des gens dans le monde qui font des thèses de doctorat sur les algorithmes de tri, et les algorithmes les plus avancés dans la recherche sont implémentés dans la commande sort. Vous ne pourrez pas lutter avec l’un de vos programmes. C’est un exemple typique du KISS : la commande est simple, ne sait faire qu’une chose, mais le fait vraiment très très bien.

Conformément à la philosophie KISS, les systèmes Unix, dont Linux, démarrent traditionnellement en bootant le noyau, qui finit par donner la main à un programme d’initialisation dont le processus est lancé en ayant le PID 1. Ce programme a pour tâche de lancer tous les autres processus de sorte que le système entier soit opérationnel. Ce programme d’initialisation traditionnel est init, et provient de son ancêtre init system V.

Tout comme sort, init est léger, ne sait faire qu’une chose mais le fait très bien : lancer tout le système.

Tout allait bien jusqu’à ce qu’en 2010, un ayatollah de chez Red Hat, Lennart Poettering, change la donne en décrétant qu’init n’était plus assez bien, qu’il fallait l’abandonner au profit de son bébé systemd, qui ne respecte plus le principe KISS. En effet, systemd permet d’initialiser comme init, mais il donne également un cadre global pour créer des services (les services existent aussi sous System V, mais assurés par un autre programme qu’init).

Continuer la lecture

Linux : run0 ou la fin programmée de sudo ?

Pendant des décennies, la commande sudo a été la clé de voûte de l’administration des systèmes Unix et Linux, un passage obligé pour les administrateurs souhaitant effectuer des opérations privilégiées. Cependant, un vent de changement souffle sur l’écosystème Linux. Des annonces récentes et des décisions majeures de la part de distributions influentes comme Fedora et Ubuntu laissent entrevoir la disparition programmée de sudo au profit de nouvelles alternatives plus modernes et sécurisées. Le leader de cette révolution n’est autre que run0, un outil intégré à systemd qui promet de redéfinir notre rapport aux privilèges système.

Le talon d’Achille de sudo: une question de conception

Pour comprendre ce changement, il faut revenir sur la faille fondamentale de sudo. Depuis sa création dans les années 1980, cette commande repose sur un mécanisme ancien et risqué : le bit setuid.

Le problème est que sudo est un binaire appartenant à root avec le bit setuid activé (rws). Cela signifie qu’un utilisateur standard, en exécutant sudo, voit le processus s’exécuter avec les droits de root. Si le binaire présente des défauts, un attaquant peut injecter une exploitation qui sera alors exécutée avec les droits root.

La surface d’attaque de sudo est également pointée du doigt. Avec plus de 100 000 lignes de code (presque 150 000 lignes, ce qui peut étonner car basiquement sudo effectue un fork+exec, fonctionnalité qui peut s’écrire en moins de 100 lignes de code en langage C), la marge d’erreur est considérable. Cet héritage des débuts d’Unix est aujourd’hui perçu par de nombreux experts comme une anomalie : « SUID est un concept très étrange. Dans mon monde idéal, nous aurions un système d’exploitation qui n’utilise pas du tout SUID ».

run0: la réponse de systemd

Continuer la lecture