AprÚs cinq mois de développement la publication du gestionnaire systÚme . Parmi les nouveautés, on note l'intégration dans le PID 1 d'un gestionnaire de manque de mémoire dans le systÚme, la prise en charge de l'attachement de programmes BPF personnalisés pour le filtrage du trafic des unités, de nombreuses nouvelles options pour systemd-networkd, un mode de surveillance de la bande passante des interfaces réseau, l'utilisation par défaut sur les systÚmes 64 bits de numéros de PID sur 22 bits au lieu de 16 bits, la transition vers une hiérarchie unifiée des cgroups, et l'inclusion dans systemd-network-generator.
Principales modifications :
- Le gestionnaire PID 1 a ajoutĂ© la reconnaissance des signaux gĂ©nĂ©rĂ©s par le noyau concernant le manque de mĂ©moire (Out-Of-Memory, OOM) pour transfĂ©rer des unitĂ©s ayant atteint la limite de consommation de mĂ©moire dans un Ă©tat spĂ©cial, avec la possibilitĂ© optionnelle de les forcer Ă se terminer ou Ă s'arrĂȘter;
- De nouveaux paramĂštres IPIngressFilterPath et
IPEgressFilterPath ont Ă©tĂ© implĂ©mentĂ©s pour permettre l'attachement de programmes BPF avec des gestionnaires arbitraires pour filtrer les paquets IP entrants et sortants gĂ©nĂ©rĂ©s par les processus liĂ©s Ă cette unitĂ©. Ces fonctionnalitĂ©s offrent la possibilitĂ© de crĂ©er des pare-feu pour les services systemd. d'un simple filtre rĂ©seau basĂ© sur BPF; - L'outil systemctl a ajoutĂ© la commande «clean» pour supprimer le cache, les fichiers dâexĂ©cution, les informations dâĂ©tat et les rĂ©pertoires de logs;
- systemd-networkd a ajouté la prise en charge des interfaces réseau MACsec, nlmon, IPVTAP et Xfrm;
- systemd-networkd a implĂ©mentĂ© la configuration distincte des piles DHCPv4 et DHCPv6 via les sections «[DHCPv4]» et «[DHCPv6]» dans le fichier de configuration. L'option RoutesToDNS a Ă©tĂ© ajoutĂ©e pour ajouter une route sĂ©parĂ©e vers le serveur DNS indiquĂ© dans les paramĂštres obtenus du serveur DHCP (pour que le trafic vers le DNS soit envoyĂ© via le mĂȘme lien que la route principale obtenue du DHCP). Pour DHCPv4, de nouvelles options ont Ă©tĂ© ajoutĂ©es : MaxAttempts â nombre maximal de requĂȘtes pour obtenir une adresse, BlackList â liste noire des serveurs DHCP, SendRelease â activĂ© l'envoi de messages DHCP RELEASE Ă la fin de la session;
- De nouvelles commandes ont été ajoutées à l'utilitaire systemd-analyze :
- «systemd-analyze timestamp» â analyse et conversion du temps;
- «systemd-analyze timespan» â analyse et conversion des intervalles de temps;
- «systemd-analyze condition» â analyse et test des expressions ConditionXYZ;
- «systemd-analyze exit-status» â analyse et conversion des codes de sortie comprenant des numĂ©ros dans les noms et vice-versa;
- «systemd-analyze unit-files» â affiche la liste de tous les chemins de fichiers pour les unitĂ©s et les alias d'unitĂ©s.
- Les options SuccessExitStatus, RestartPreventExitStatus et
RestartForceExitStatus prennent dĂ©sormais en charge non seulement les codes de retour numĂ©riques, mais aussi leurs identifiants textuels (par exemple «DATAERR»). Vous pouvez consulter la liste de liaison des codes aux identifiants avec la commande «systemd-analyze exit-status»; - L'outil networkctl a ajoutĂ© la commande «delete» pour supprimer des dispositifs rĂ©seau virtuels, ainsi que l'option «âstats» pour afficher des statistiques sur les dispositifs;
- Des paramĂštres SpeedMeter et SpeedMeterIntervalSec ont Ă©tĂ© ajoutĂ©s Ă networkd.conf pour mesurer pĂ©riodiquement la bande passante des interfaces rĂ©seau. Les statistiques obtenues grĂące Ă ces mesures peuvent ĂȘtre consultĂ©es dans la sortie de la commande ânetworkctl statusâ;
- Un nouvel utilitaire systemd-network-generator a été ajouté pour générer des fichiers
.network, .netdev et .link en se basant sur les paramĂštres IP fournis lors du dĂ©marrage via la ligne de commande du noyau Linux au format des paramĂštres Dracut; - La valeur de sysctl «kernel.pid_max» sur les systĂšmes 64 bits est dĂ©sormais par dĂ©faut fixĂ©e Ă 4194304 (PID de 22 bits au lieu de 16 bits), ce qui rĂ©duit la probabilitĂ© de collisions dans l'attribution des PID, augmente la limite du nombre de processus pouvant ĂȘtre exĂ©cutĂ©s simultanĂ©ment et amĂ©liore la sĂ©curitĂ©. Ce changement peut potentiellement entraĂźner des problĂšmes de compatibilitĂ©, mais en pratique, aucun problĂšme de ce type n'a Ă©tĂ© signalĂ© jusqu'Ă prĂ©sent;
- Par défaut, lors de la compilation, un passage à une hiérarchie unifiée cgroups-v2 («-Ddefault-hierarchy=unified») a été effectué. Auparavant, le mode hybride était défini par défaut («-Ddefault-hierarchy=hybrid»);
- Le comportement du filtre d'appels systÚme (SystemCallFilter) a été modifié, de sorte que toute tentative d'accÚs à un appel systÚme interdit termine maintenant l'ensemble du processus, et non des fils individuels (thread), car la terminaison de fils individuels pourrait entraßner des problÚmes imprévisibles. Ces modifications ne s'appliquent qu'en présence d'un noyau Linux 4.14+ et de libseccomp 2.4.0+;
- Les programmes non privilégiés ont la possibilité d'envoyer des paquets ICMP Echo (ping) grùce à la configuration sysctl «net.ipv4.ping_group_range» établie pour toute la plage de groupes (pour tous les processus);
- Pour accĂ©lĂ©rer le processus de compilation, la gĂ©nĂ©ration des manuels (pour compiler la documentation complĂšte, utilisez l'option « -Dman=true » ou « -Dhtml=true » pour les manuels au format html) est dĂ©sactivĂ©e par dĂ©faut. Pour simplifier la consultation de la documentation, deux scripts build/man/man et build/man/html sont inclus pour gĂ©nĂ©rer et prĂ©visualiser les manuels d'intĂ©rĂȘt ;
- Pour traiter les noms de domaine contenant des caractÚres d'alphabets nationaux, la bibliothÚque libidn2 est utilisée par défaut (pour revenir à libidn, il faut utiliser l'option « -Dlibidn=true ») ;
- Le support de l'exĂ©cutable /usr/sbin/halt.local, qui offrait une fonctionnalitĂ© qui n'a pas Ă©tĂ© largement adoptĂ©e dans les distributions, a Ă©tĂ© interrompu. Pour exĂ©cuter des commandes lors de l'arrĂȘt, il est recommandĂ© d'utiliser des scripts dans /usr/lib/systemd/system-shutdown/ ou de dĂ©finir une nouvelle unit dĂ©pendante de final.target ;
- Ă la derniĂšre Ă©tape de l'arrĂȘt, systemd augmente automatiquement le niveau des logs dans sysctl « kernel.printk », ce qui rĂ©sout le problĂšme d'affichage des Ă©vĂ©nements dans le log qui se produisent aux derniĂšres Ă©tapes de l'arrĂȘt, lorsque les dĂ©mons de journalisation standard sont dĂ©jĂ terminĂ©s ;
- Dans journalctl et d'autres outils de visualisation des logs, les avertissements sont désormais mis en surbrillance en jaune et les entrées d'audit en bleu pour leur distinction visuelle ;
- Dans la variable d'environnement $PATH, le chemin vers bin/ vient maintenant avant le chemin vers sbin/, c'est-à -dire qu'en cas de noms de fichiers exécutables identiques dans les deux répertoires, le fichier de bin/ sera exécuté ;
- Dans systemd-logind, l'appel de SetBrightness() a été ajouté pour changer en toute sécurité la luminosité de l'écran pour chaque session ;
- Un argument « âwait-for-initialization » a Ă©tĂ© ajoutĂ© Ă la commande « udevadm info » pour attendre la fin de l'initialisation du dispositif ;
- Au cours du processus de démarrage, le gestionnaire PID 1 affiche maintenant les noms des unités au lieu d'une ligne avec leur description. Pour revenir au comportement précédent, vous pouvez utiliser l'option StatusUnitFormat dans /etc/systemd/system.conf ou le paramÚtre du noyau systemd.status_unit_format ;
- Dans /etc/systemd/system.conf, une option KExecWatchdogSec a été ajoutée pour le watchdog dans PID 1, définissant le délai pour un redémarrage utilisant kexec. L'ancienne configuration
ShutdownWatchdogSec a Ă©tĂ© renommĂ©e en RebootWatchdogSec et dĂ©finit le dĂ©lai pour les travaux lors de l'arrĂȘt ou du redĂ©marrage normal ; - Une nouvelle option a Ă©tĂ© ajoutĂ©e pour les services , permettant de spĂ©cifier des commandes qui seront exĂ©cutĂ©es avant ExecStartPre. En fonction du code d'erreur retournĂ© par la commande, une dĂ©cision est prise sur la suite de l'exĂ©cution de l'unitĂ© â si le code 0 est retournĂ©, le dĂ©marrage de l'unitĂ© se poursuit, si le code est compris entre 1 et 254, il se termine silencieusement sans indication d'Ă©chec, si le code est 255 â il se termine avec une indication d'Ă©chec ;
- Un nouveau service systemd-pstore.service a été ajouté pour extraire des données à partir de sys/fs/pstore/ et les sauvegarder dans /var/lib/pstore pour une analyse ultérieure ;
- De nouvelles commandes ont été ajoutées à l'utilitaire timedatectl pour configurer les paramÚtres NTP pour systemd-timesyncd en fonction des interfaces réseau ;
- L'affichage des locales autres que UTF-8 a été supprimé de la commande « localectl list-locales » ;
- Les erreurs d'attribution des variables dans les fichiers sysctl.d/ sont désormais ignorées si le nom de la variable commence par le symbole « - » ;
- Service est maintenant entiĂšrement responsable de l'initialisation du pool d'entropie du gĂ©nĂ©rateur de nombres pseudo-alĂ©atoires du noyau Linux. Les services qui nĂ©cessitent un /dev/urandom correctement initialisĂ© doivent ĂȘtre lancĂ©s aprĂšs systemd-random-seed.service ;
- Dans le chargeur systemd-boot, une option facultative a été mise en place pour maintenir avec une séquence aléatoire dans la partition de systÚme EFI (ESP) ;
- De nouvelles commandes « bootctl random-seed » ont été ajoutées à l'utilitaire bootctl pour générer un fichier de seed dans l'ESP et « bootctl is-installed » pour vérifier l'installation du chargeur systemd-boot. bootctl affiche également des avertissements concernant une configuration incorrecte des entrées de démarrage (par exemple, lorsque l'image du noyau a été supprimée alors qu'une entrée pour son démarrage a été laissée) ;
- Un choix automatique de la partition d'Ă©change a Ă©tĂ© assurĂ© lors de la transition du systĂšme en mode veille. La partition est choisie en fonction de la prioritĂ© qui lui est assignĂ©e, et en cas de prioritĂ©s identiques â de la taille de l'espace libre ;
- Une option keyfile-timeout a été ajoutée à /etc/crypttab pour déterminer le temps d'attente d'un dispositif avec une clé de chiffrement avant d'afficher une demande de mot de passe pour accéder à la partition chiffrée ;
- Une option IOWeight a été ajoutée pour définir le poids d'entrée/sortie pour le planificateur BFQ ;
- Un mode strict (âstrictâ) a Ă©tĂ© ajoutĂ© Ă systemd-resolved pour DNS-over-TLS et la possibilitĂ© de mettre en cache uniquement les rĂ©ponses DNS positives a Ă©tĂ© implĂ©mentĂ©e (« Cache no-negative » dans resolved.conf) ;
- Pour VXLAN dans systemd-networkd, une option GenericProtocolExtension a été ajoutée pour activer les extensions de protocole VXLAN. Pour VXLAN et GENEVE, une option IPDoNotFragment a été ajoutée pour définir le drapeau interdisant la fragmentation des paquets sortants ;
- Dans systemd-networkd, la section « [Route] » a introduit l'option FastOpenNoCookie pour activer le mécanisme d'ouverture rapide des connexions TCP (TFO - TCP Fast Open, RFC 7413) lié à des routes spécifiques, ainsi que l'option TTLPropagate pour configurer le TTL LSP (Label Switched Path). L'option « Type » prend en charge les modes de routage local, broadcast, anycast, multicast, any et xresolve ;
- Dans systemd-networkd, la section « [Network] » propose l'option DefaultRouteOnDevice pour configurer automatiquement la route par défaut pour un périphérique réseau donné ;
- Dans systemd-networkd, des options ProxyARP et
ProxyARPWifi ont été ajoutées pour configurer le comportement du proxy ARP, MulticastRouter pour définir les paramÚtres de routage en mode multicast, et MulticastIGMPVersion pour changer la version d'IGMP (Internet Group Management Protocol) pour le multicast ; - Dans systemd-networkd, pour les tunnels FooOverUDP, des options Local, Peer et PeerPort ont été ajoutées pour configurer les adresses IP des cÎtés local et distant, ainsi que le numéro de port réseau. Pour les tunnels TUN, l'option VnetHeader a été ajoutée pour configurer la prise en charge de GSO (Generic Segment Offload) ;
- Dans systemd-networkd, dans les fichiers .network et .link, la section [Match] a introduit l'option Property, permettant d'identifier les dispositifs en fonction de propriétés spécifiques à udev ;
- Dans systemd-networkd, pour les tunnels, une option AssignToLoopback a été ajoutée, contrÎlant la liaison de l'extrémité du tunnel au dispositif loopback « lo » ;
- Dans systemd-networkd, l'activation automatique de la pile IPv6 est mise en Ćuvre en cas de blocage via sysctl disable_ipv6 - IPv6 est activĂ© si des paramĂštres IPv6 (statique ou DHCPv6) sont dĂ©finis pour l'interface rĂ©seau, sinon la valeur sysctl dĂ©jĂ dĂ©finie reste inchangĂ©e ;
- Dans les fichiers .network, la configuration CriticalConnection a été remplacée par l'option KeepConfiguration, offrant plus d'outils pour définir les situations (« yes », « static », « dhcp-on-stop », « dhcp ») dans lesquelles systemd-networkd ne doit pas toucher aux connexions existantes lors du démarrage ;
- VulnĂ©rabilitĂ© corrigĂ©e , causĂ©e par un manque de contrĂŽle d'accĂšs Ă l'interface D-Bus de systemd-resolved. Ce problĂšme permet Ă un utilisateur non privilĂ©giĂ© d'effectuer des opĂ©rations normalement rĂ©servĂ©es aux administrateurs, par exemple, il peut modifier les paramĂštres DNS et rediriger les requĂȘtes DNS vers un serveur imposteur ;
- Vulnérabilité corrigée , liée à la non-activation de pam_systemd pour les sessions non interactives, qui permet d'organiser le spoofing de la session active.
Source : opennet.ru
