gestionnaire de système systemd version 249

Après trois mois de développement, est présentée la version du gestionnaire de système systemd 249. La nouvelle version offre la possibilité de définir des utilisateurs/groupes au format JSON, stabilise le protocole Journal, simplifie l'organisation du chargement des partitions de disque successives, ajoute la possibilité de relier les programmes BPF aux services et implémenter le mappage des identifiants des utilisateurs dans les partitions montées, une grande partie des nouveaux paramètres réseau et des opportunités de lancement de conteneurs sont offertes.

Les principaux changements:

  • Le protocole Journal est documenté et peut être utilisé dans les clients à la place du protocole Syslog pour la livraison locale des enregistrements de journaux. Le protocole Journal est implémenté depuis longtemps et est déjà utilisé dans certaines bibliothèques clientes, cependant, son support officiel vient tout juste d'être annoncé.
  • Userdb et nss-systemd prennent en charge la lecture de définitions d'utilisateurs supplémentaires situées dans les répertoires /etc/userdb/, /run/userdb/, /run/host/userdb/ et /usr/lib/userdb/, spécifiés au format JSON. Il est à noter que cette fonctionnalité fournira un mécanisme supplémentaire pour créer des utilisateurs dans le système, lui fournissant une intégration complète avec NSS et /etc/shadow. La prise en charge JSON pour les entrées d'utilisateur/groupe permettra également d'attacher divers paramètres de gestion des ressources et d'autres paramètres aux utilisateurs reconnus par pam_systemd et systemd-logind.
  • nss-systemd fournit une synthèse des entrées utilisateur/groupe dans /etc/shadow en utilisant des mots de passe hachés depuis systemd-homed.
  • Un mécanisme a été implémenté qui simplifie l'organisation des mises à jour à l'aide de partitions de disque qui se remplacent (une partition est active et la seconde est de secours - la mise à jour est copiée sur la partition de secours, après quoi elle devient active). S'il y a deux partitions racine ou /usr dans l'image disque et qu'udev n'a pas détecté la présence du paramètre 'root=', ou traite les images disque spécifiées via l'option "--image" dans systemd-nspawn et systemd -utilitaires de dissect, la partition de démarrage peut être calculée en comparant les étiquettes GPT (en supposant que l'étiquette GPT mentionne le numéro de version du contenu de la partition et que systemd sélectionnera la partition avec les modifications les plus récentes).
  • Un paramètre BPFProgram a été ajouté aux fichiers de service, avec lequel vous pouvez organiser le chargement des programmes BPF dans le noyau et les gérer avec une liaison à des services système spécifiques.
  • Systemd-fstab-generator et systemd-repart ajoutent la possibilité de démarrer à partir de disques qui n'ont qu'une partition /usr et aucune partition racine (la partition racine sera générée par systemd-repart lors du premier démarrage).
  • Dans systemd-nspawn, l'option "--private-user-chown" a été remplacée par l'option plus générique "--private-user-ownership", qui peut accepter les valeurs "chown" comme l'équivalent de "-- private-user-chown", "off" pour désactiver l'ancien paramètre, "map" pour mapper les ID utilisateur sur les systèmes de fichiers montés et "auto" pour sélectionner "map" si la fonctionnalité requise est présente dans le noyau (5.12+) ou revenir en arrière à un appel récursif à "chown" autrement. À l'aide du mappage, vous pouvez mapper les fichiers d'un utilisateur sur une partition étrangère montée vers un autre utilisateur du système actuel, ce qui facilite le partage de fichiers entre différents utilisateurs. Dans le mécanisme de répertoire personnel portable hébergé par systemd, le mappage permettra aux utilisateurs de déplacer leurs répertoires personnels vers des supports externes et de les utiliser sur différents ordinateurs qui n'ont pas la même disposition d'ID utilisateur.
  • Dans systemd-nspawn, l'option "--private-user" peut désormais utiliser la valeur "identity" pour refléter directement les ID utilisateur lors de la configuration d'un espace de noms utilisateur, c'est-à-dire L'UID 0 et l'UID 1 du conteneur seront reflétés dans l'UID 0 et l'UID 1 côté hôte, afin de réduire les vecteurs d'attaque (le conteneur ne recevra que les capacités de processus dans son espace de noms).
  • L'option « --bind-user » a été ajoutée à systemd-nspawn pour transférer un compte utilisateur existant dans l'environnement hôte vers le conteneur (le répertoire personnel est monté dans le conteneur, une entrée utilisateur/groupe est ajoutée et le mappage UID s'effectue entre le conteneur et l'environnement hôte).
  • Ajout de la prise en charge de la demande de mots de passe définis pour systemd-ask-password et systemd-sysusers (passwd.hashed-password. et passwd.plaintext-password. ) en utilisant le mécanisme introduit dans systemd 247 pour transférer en toute sécurité des données sensibles à l'aide de fichiers intermédiaires dans un répertoire séparé. Par défaut, les informations d'identification sont acceptées du processus avec PID1, qui les reçoit, par exemple, du gestionnaire de gestion de conteneurs, qui permet de configurer le mot de passe utilisateur au premier démarrage.
  • systemd-firstboot ajoute la prise en charge de l'utilisation du mécanisme de transfert sécurisé de données sensibles pour interroger divers paramètres système, qui peuvent être utilisés pour initialiser les paramètres système lors du premier démarrage d'une image de conteneur qui ne dispose pas des paramètres nécessaires dans le répertoire /etc.
  • Le processus PID 1 garantit que le nom et la description de l'unité sont affichés lors du démarrage. Vous pouvez modifier la sortie via le paramètre « StatusUnitFormat=combined » dans system.conf ou l'option de ligne de commande du noyau « systemd.status-unit-format=combined ».
  • L'option "--image" a été ajoutée aux utilitaires systemd-machine-id-setup et systemd-repart pour transférer un fichier avec un identifiant de machine vers une image disque ou pour augmenter la taille d'une image disque.
  • Un paramètre MakeDirectories a été ajouté au fichier de configuration de partition utilisé par l'utilitaire systemd-repart, qui peut être utilisé pour créer des répertoires arbitraires dans le système de fichiers créé avant d'être reflété dans la table de partition (par exemple, pour créer des répertoires pour les points de montage dans la partition racine afin que vous puissiez immédiatement monter la partition en mode lecture seule). Pour contrôler les drapeaux GPT dans les sections créées, les paramètres Flags, ReadOnly et NoAuto correspondants ont été ajoutés. Le paramètre CopyBlocks a la valeur « auto » pour sélectionner automatiquement la partition de démarrage actuelle comme source lors de la copie de blocs (par exemple, lorsque vous devez transférer votre propre partition racine sur un nouveau support).
  • GPT implémente l'indicateur « grow-file-system », qui est similaire à l'option de montage x-systemd.growfs et permet une extension automatique de la taille du FS jusqu'aux limites du périphérique bloc si la taille du FS est inférieure à la partition. L'indicateur s'applique aux systèmes de fichiers Ext3, XFS et Btrfs et peut être appliqué aux partitions détectées automatiquement. L'indicateur est activé par défaut pour les partitions inscriptibles créées automatiquement via systemd-repart. L'option GrowFileSystem a été ajoutée pour configurer l'indicateur dans systemd-repart.
  • Le fichier /etc/os-release prend en charge les nouvelles variables IMAGE_VERSION et IMAGE_ID pour déterminer la version et l'ID des images mises à jour atomiquement. Les spécificateurs %M et %A sont proposés pour remplacer les valeurs spécifiées dans diverses commandes.
  • Le paramètre « --extension » a été ajouté à l'utilitaire portablectl pour activer les images d'extension système portables (par exemple, grâce à elles, vous pouvez distribuer des images avec des services supplémentaires intégrés dans la partition racine).
  • L'utilitaire systemd-coredump fournit l'extraction des informations d'identification de build ELF lors de la génération d'un core dump d'un processus, ce qui peut être utile pour déterminer à quel package appartient un processus défaillant si des informations sur le nom et la version des packages deb ou rpm ont été créées. dans les fichiers ELF.
  • Une nouvelle base matérielle pour les périphériques FireWire (IEEE 1394) a été ajoutée à udev.
  • Dans udev, trois modifications ont été ajoutées au schéma de sélection du nom d'interface réseau « net_id » qui violent la rétrocompatibilité : les caractères incorrects dans les noms d'interface sont désormais remplacés par « _ » ; Les noms des emplacements PCI hotplug pour les systèmes s390 sont traités au format hexadécimal ; L'utilisation de jusqu'à 65535 16383 périphériques PCI intégrés est autorisée (auparavant, les nombres supérieurs à XNUMX XNUMX étaient bloqués).
  • systemd-resolved ajoute le domaine « home.arpa » à la liste NTA (Negative Trust Anchors), qui est recommandée pour les réseaux domestiques locaux, mais non utilisée dans DNSSEC.
  • Le paramètre CPUAffinity fournit l'analyse des spécificateurs « % ».
  • Un paramètre ManageForeignRoutingPolicyRules a été ajouté aux fichiers .network, qui peut être utilisé pour exclure systemd-networkd du traitement des politiques de routage tierces.
  • Le paramètre RequiredFamilyForOnline a été ajouté aux fichiers « .network » pour déterminer la présence d'une adresse IPv4 ou IPv6 comme signe que l'interface réseau est à l'état « en ligne ». Networkctl fournit un affichage de l'état « en ligne » pour chaque lien.
  • Ajout du paramètre OutgoingInterface aux fichiers .network pour définir les interfaces sortantes lors de la configuration des ponts réseau.
  • Un paramètre Group a été ajouté aux fichiers « .network », vous permettant de configurer un groupe Multipath pour les entrées dans la section « [NextHop] ».
  • Ajout des options "-4" et "-6" à systemd-network-wait-online pour limiter les attentes de connexion à IPv4 ou IPv6 uniquement.
  • Un paramètre RelayTarget a été ajouté aux paramètres du serveur DHCP, qui fait passer le serveur en mode DHCP Ralay. Pour une configuration supplémentaire du relais DHCP, les options RelayAgentCircuitId et RelayAgentRemoteId sont proposées.
  • Le paramètre ServerAddress a été ajouté au serveur DHCP, vous permettant de définir explicitement l'adresse IP du serveur (sinon l'adresse est sélectionnée automatiquement).
  • Le serveur DHCP implémente la section [DHCPServerStaticLease], qui vous permet de configurer des liaisons d'adresses statiques (baux DHCP), en spécifiant des liaisons IP fixes aux adresses MAC et vice versa.
  • Le paramètre RestrictAddressFamilies prend en charge la valeur « aucun », ce qui signifie que le service n’aura accès aux sockets d’aucune famille d’adresses.
  • Dans les fichiers « .network » des sections [Address], [DHCPv6PrefixDelegation] et [IPv6Prefix], la prise en charge du paramètre RouteMetric est implémentée, ce qui vous permet de spécifier la métrique du préfixe de route créé pour l'adresse spécifiée.
  • nss-myhostname et systemd-resolved fournissent une synthèse des enregistrements DNS avec des adresses pour les hôtes portant un nom spécial « _outbound », pour lesquels une adresse IP locale est toujours émise, choisie conformément aux routes par défaut utilisées pour les connexions sortantes.
  • Dans les fichiers .network, dans la section « [DHCPv4] », un paramètre RoutesToNTP actif par défaut a été ajouté, qui nécessite l'ajout d'une route distincte via l'interface réseau actuelle pour accéder à l'adresse du serveur NTP obtenue pour cette interface à l'aide de DHCP (similaire au DNS , le paramètre permet de garantir que le trafic vers le serveur NTP sera acheminé via l'interface par laquelle cette adresse a été reçue).
  • Ajout des paramètres SocketBindAllow et SocketBindDeny pour contrôler l'accès aux sockets liés au service actuel.
  • Pour les fichiers d'unité, un paramètre conditionnel appelé ConditionFirmware a été implémenté, qui vous permet de créer des vérifications qui évaluent les fonctions du micrologiciel, telles que le travail sur les systèmes UEFI et device.tree, ainsi que de vérifier la compatibilité avec certaines capacités de l'arborescence des périphériques.
  • Implémentation de l'option ConditionOSRelease pour vérifier les champs dans le fichier /etc/os-release. Lors de la définition des conditions de vérification des valeurs des champs, les opérateurs « = », « != », « <« , « <= », « >= », « > » sont acceptables.
  • Dans l'utilitaire hostnamectl, les commandes telles que « get-xyz » et « set-xyz » sont libérées des préfixes « get » et « set », par exemple, au lieu de « hostnamectl get-hostname » et « hostnamectl « set-hostname » vous pouvez utiliser la commande « hostnamectl hostname » », l'attribution d'une valeur dans laquelle est déterminée en spécifiant un argument supplémentaire (« hostnamectl hostname value »). La prise en charge des anciennes commandes a été conservée pour garantir la compatibilité.
  • L'utilitaire systemd-detect-virt et le paramètre ConditionVirtualization garantissent une identification correcte des environnements Amazon EC2.
  • Le paramètre LogLevelMax dans les fichiers d'unité s'applique désormais non seulement aux messages de journal générés par le service, mais également aux messages de processus PID 1 qui mentionnent le service.
  • Possibilité d'inclure des données SBAT (UEFI Secure Boot Advanced Targeting) dans les fichiers EFI PE à démarrage système.
  • /etc/crypttab implémente de nouvelles options « sans tête » et « écho de mot de passe » - la première vous permet d'ignorer toutes les opérations associées à la demande interactive de mots de passe et de codes PIN de la part de l'utilisateur, et la seconde vous permet de configurer la méthode d'affichage de la saisie du mot de passe. (ne rien afficher, afficher caractère par caractère et afficher des astérisques). L'option « --echo » a été ajoutée à systemd-ask-password à des fins similaires.
  • systemd-cryptenroll, systemd-cryptsetup et systemd-homed ont étendu la prise en charge du déverrouillage des partitions LUKS2 cryptées à l'aide de jetons FIDO2. Ajout de nouvelles options « --fido2-with-user-presence », « --fido2-with-user-verification » et « -fido2-with-client-pin » pour contrôler la vérification de la présence physique de l'utilisateur, la vérification et la nécessité d'entrer un code PIN.
  • Ajout des options « --user », « --system », « --merge » et « --file » à systemd-journal-gatewayd, similaires aux options journalctl.
  • En plus des dépendances directes entre les unités spécifiées via les paramètres OnFailure et Slice, la prise en charge des dépendances inverses implicites OnFailureOf et SliceOf a été ajoutée, ce qui peut être utile, par exemple, pour déterminer toutes les unités incluses dans slice.
  • Ajout de nouveaux types de dépendances entre unités : OnSuccess et OnSuccessOf (l'opposé de OnFailure, appelé en cas de réussite) ; PropagandesStopTo et StopPropagatedFrom (vous permettent de propager l'événement d'arrêt d'une unité à une autre unité) ; Upholds et UpheldBy (alternative à Restart).
  • L'utilitaire systemd-ask-password dispose désormais d'une option « --emoji » pour contrôler l'apparence du symbole du cadenas (🔐) dans la ligne de saisie du mot de passe.
  • Ajout de la documentation sur l'arborescence des sources systemd.
  • Pour les unités, une propriété MemoryAvailable a été ajoutée, indiquant la quantité de mémoire restante à l'unité avant d'atteindre la limite définie via les paramètres MemoryMax, MemoryHigh ou MemoryAvailable.

Source: opennet.ru

Ajouter un commentaire