Après trois mois de développement, la version du gestionnaire de système systemd 259 est disponible. Les changements clés incluent : prise en charge de la bibliothèque standard Musl, la commande « run0 —empower » pour effectuer des actions privilégiées sans changer d'UID, le chargement dynamique des bibliothèques tierces utilisées dans libsystemd, et l'ignorance des fichiers de configuration en ajoutant « .ignore » à leur nom.
Parmi les changements de la nouvelle version :
- Un support partiel de la bibliothèque standard C Musl a été ajouté, activé en définissant la valeur « musl » dans l'option « libc » du système de construction Meson. En raison du fait que la bibliothèque Musl ne fournit pas de fonctionnalité NSS, la construction de systemd avec Musl ne permet pas d'utiliser les composants nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd, ainsi que le paramètre DynamicUser et la possibilité d'exécuter systemd-nspawn sans privilèges. Les développeurs de systemd ne garantissent pas encore que le support de Musl restera dans les futures versions. La décision dépendra du succès du développement de la couche qui implémente des fonctionnalités supplémentaires au-dessus de Musl, ainsi que de la demande pour le projet et des rapports sur les erreurs spécifiques à Musl.
- L'utilitaire run0, présenté comme un remplacement sécurisé du programme sudo, fonctionnant sur systemd-run, a ajouté l'option « —empower », permettant de lancer une nouvelle session avec des privilèges accrus, sans passer à l'utilisateur root. L'exécution d'actions privilégiées sans changer d'UID est organisée par le biais de l'attribution de drapeaux de capacités, tels que CAP_SYS_ADMIN, nécessaires pour accéder à la plupart des appels système privilégiés. Les processus lancés sont également placés dans un groupe séparé « empower », auquel est accordé l'accès à la plupart des actions Polkit.
- Il a été décidé de supprimer le support des scripts de services au format System V dans la prochaine version. Les composants systemd-sysv-install, systemd-rc-local-generator et systemd-sysv-generator sont prévus pour être supprimés. De plus, la prochaine version prévoit un renforcement des exigences minimales : noyau Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0, libxcrypt 4.4.0, util-linux 2.37, elfutils 0.177, cryptsetup 2.4.0, libseccomp 2.4.0.
- Dans le cadre de l'initiative visant à réduire les dépendances, libsystemd a implémenté le chargement dynamique des bibliothèques libacl, libblkid, libseccomp, libselinux et libmount via l'appel dlopen() dans les situations où leurs fonctions sont réellement nécessaires. La gestion de la sous-système d'audit Linux et de PAM est également réalisée via dlopen(). La fonctionnalité, précédemment appelée via la bibliothèque de couche libcap, est intégrée dans libsystemd.
- Dans systemd-resolved, une fonctionnalité a été ajoutée pour attacher des gestionnaires locaux, qui sont appelés à chaque requête de résolution de noms locaux. Les gestionnaires sont placés dans le répertoire /run/systemd/resolve.hook/.
- Un champ UUID a été ajouté dans la base de données des utilisateurs, et l’utilitaire userdbctl a été doté de l'option «—uuid» pour la recherche par UUID.
- Les fichiers de configuration dont les noms se terminent par «.ignore» sont maintenant ignorés.
- Dans systemd-importd, une logique intégrée est mise en œuvre pour travailler avec les archives TAR, utilisant libarchive à la place de l'utilitaire GNU tar. Il est maintenant possible d'exécuter systemd-machined et systemd-importd en liaison avec des utilisateurs, et non au niveau système, en chargeant des images système dans ~/ .local/state/machines/. Des options «—user» et «—system» ont été ajoutées à l'utilitaire importctl pour sélectionner le mode de fonctionnement.
- Le mode de stockage des journaux par défaut a été changé de ‘auto’ à ‘persistent’ (auparavant, le mode dépendait de la présence du répertoire /var/log/journal).
- Dans systemd-networkd et systemd-nspawn, le support pour la création de règles de traduction d'adresses (NAT) via iptables/libiptc a été interrompu. Seul le support de nftables est maintenu.
- Dans systemd-boot et systemd-stub, le support pour TPM 1.2 a été interrompu (le support pour TPM 2.0 reste en place).
- Dans systemd-machined, le montage par défaut des images de disque «cachées», dont le nom commence par un point, est assuré en mode lecture seule.
- L'API basée sur le protocole Varlink a été étendue, et peut désormais être utilisée pour accéder aux paramètres des services. Les appels IPC Reload() et Reexecute() ont été implémentés. Des appels pour accéder aux fonctionnalités et paramètres de systemd-repart, systemd-resolved et systemd-networkd ont été ajoutés.
- Un paramètre ExecReloadPost a été ajouté, permettant de lancer des commandes après le redémarrage de la configuration d'un service.
- Pour les services, les propriétés OOMKills et ManagedOOMKills ont été mises en œuvre, contenant le nombre de processus terminés de force par le noyau ou systemd-oomd en raison d'un manque de mémoire.
- Pour les services temporaires, une propriété RootDirectoryFileDescriptor a été ajoutée, définissant le descripteur de fichier du répertoire racine.
- Une nouvelle option UserNamespacePath a été ajoutée, permettant de lier une unité à l'espace d'identifiants utilisateurs (user namespace) en spécifiant un chemin dans le pseudo-système de fichiers /proc, de manière similaire aux options IPCNamespacePath et NetworkNamespacePath. Dans systemd-nspawn, l'option NamespacePath a été ajoutée à la section [Network] des fichiers .nspawn pour indiquer l'espace de noms réseau.
- Dans systemd-sysext et systemd-confext, un support a été ajouté pour des fichiers de configuration séparés /etc/systemd/systemd-sysext.conf et /etc/systemd/systemd-confext.conf. Il est désormais possible d'utiliser la variable d'environnement SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS et $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS pour configurer les options de montage d'Overlayfs.
- Dans systemd-udevd, l'option OPTIONS=»dump-json» a été ajoutée pour afficher l'état de l'événement actuel au format JSON. La fonction net_id génère désormais des noms prévisibles pour les interfaces réseau sans fil sur les systèmes avec DeviceTree. Des liens symboliques /dev/gpio/by-id/… pour les dispositifs GPIO sont également générés.
- La commande «homectl update» permet maintenant d'utiliser l'option «—recovery-key» pour ajouter des clés de secours à un compte utilisateur existant (auparavant, de telles clés pouvaient uniquement être ajoutées lors de la création de l'utilisateur).
- Dans systemd-homed, les options «—prompt-shell» et «—prompt-groups» ont été ajoutées pour permettre le choix interactif de l'interface de ligne de commande et du groupe lors du premier démarrage avec le service systemd-homed-firstboot.service. Dans systemd-firstboot, l'option «—prompt-keymap-auto» a été ajoutée pour demander la disposition du clavier lors de l'utilisation de la console locale durant le premier démarrage.
- Dans systemd-boot, il est désormais possible de définir le niveau de détail des logs via le paramètre log-level dans loader.conf ou le champ SMBIOS io.systemd.boot.loglevel.
- Dans systemd-networkd, les options EmitDomain et Domain ont été ajoutées pour le serveur DHCP, ainsi qu'un gestionnaire pour déterminer les noms d'hôtes alloués par DHCP via la résolution DNS.
- Dans systemd-run, l'option «—root-directory» a été ajoutée pour lancer un service dans le répertoire racine spécifié. Les options «—same-root-dir» («-R») ont également été ajoutées à systemd-run et run0 pour démarrer un service dans le même répertoire racine que celui du processus parent.
- Dans systemd-modules-load, le chargement des modules du noyau a été parallélisé.
- Dans systemd-integrity-setup, un support pour les algorithmes HMAC-SHA256, PHMAC-SHA256 et PHMAC-SHA512 a été ajouté.
Source : opennet.ru
