Dopo tre mesi di sviluppo, è stata presentata la release del gestore di sistema systemd 249. In questa nuova versione è stata garantita la possibilità di definire utenti/gruppi in formato JSON, stabilizzato il protocollo Journal, semplificata l'organizzazione del caricamento delle partizioni del disco che si succedono, aggiunta la possibilità di collegare programmi BPF ai servizi, implementata la mappatura degli identificatori utente nelle partizioni montate, offerta una grande varietà di nuove impostazioni di rete e funzionalità per l'esecuzione dei container.
Principali modifiche:
- È stato documentato il protocollo Journal, che può essere utilizzato nei client anziché nel protocollo syslog per la consegna locale dei registri. Il protocollo Journal è stato implementato già da tempo e viene già utilizzato in alcune librerie client, tuttavia il suo supporto ufficiale è stato annunciato solo ora.
- In userdb e nss-systemd è garantita la lettura di definizioni aggiuntive degli utenti, collocate nelle directory /etc/userdb/, /run/userdb/, /run/host/userdb/ e /usr/lib/userdb/, definite in formato JSON. Si segnala che questa possibilità fornirà un meccanismo aggiuntivo per la creazione di utenti nel sistema, garantendo la piena integrazione con NSS e /etc/shadow. Il supporto del formato JSON per le registrazioni di utenti/gruppi permetterà anche di allegare vari parametri di gestione delle risorse e altre impostazioni riconosciute da pam_systemd e systemd-logind.
- In nss-systemd è garantita la sintesi delle registrazioni di utenti/gruppi in /etc/shadow utilizzando le password hash generate da systemd-homed.
- È stato implementato un meccanismo che semplifica l'organizzazione degli aggiornamenti utilizzando partizioni del disco che si sostituiscono a vicenda (una partizione attiva e una secondaria — l'aggiornamento viene copiato sulla partizione secondaria, che diventa poi attiva). Se nell'immagine del disco sono presenti due partizioni radice o /usr e udev non ha identificato il parametro 'root=' oppure viene eseguita la gestione delle immagini disco specificate tramite l'opzione '--image' negli strumenti systemd-nspawn e systemd-dissect, la partizione da caricare può essere calcolata confrontando le etichette GPT (si presume che l'etichetta GPT menzioni il numero di versione del contenuto della partizione e systemd sceglierà la partizione con le modifiche più recenti).
- Nei file dei servizi è stata aggiunta la configurazione BPFProgram, che consente di caricare i programmi BPF nel kernel e gestirli associandoli a specifici servizi systemd.
- In systemd-fstab-generator e systemd-repart è stata implementata la possibilità di avviare da dischi che hanno solo la partizione /usr e non una partizione radice (la partizione radice sarà generata dallo strumento systemd-repart durante il primo avvio).
- Nella systemd-nspawn, l'opzione «—private-user-chown» è stata sostituita da una variante più universale «—private-user-ownership», che può assumere i valori «chown» come equivalente di «—private-user-chown», «off» per disabilitare la vecchia impostazione, «map» per la mappatura degli identificatori degli utenti nei filesystem montati e «auto» per scegliere «map» se è presente la funzionalità necessaria nel kernel (5.12+) o tornare alla chiamata ricorsiva «chown» in caso contrario. Tramite la mappatura è possibile associare i file di un utente su una partizione montata di un'altra macchina con un altro utente nel sistema attuale, semplificando così la condivisione dei file tra più utenti. Nel meccanismo delle home directory portatili systemd-homed, la mappatura consente agli utenti di spostare le proprie home directory su supporti esterni e utilizzarle su computer diversi, dove la distribuzione degli identificatori degli utenti non corrisponde.
- In systemd-nspawn, the option "--private-user" can now use the value "identity" to directly reflect user identifiers when setting up the namespace (user namespace), meaning UID 0 and UID 1 in the container will be reflected as UID 0 and UID 1 on the host side, reducing attack vectors (the container will receive process capabilities only within its own namespace).
- In systemd-nspawn, the "--bind-user" option has been added to pass a user account from the host environment into the container (the home directory is mounted in the container, a user/group entry is added, and UID mapping is performed between the container and the host environment).
- In systemd-ask-password and systemd-sysusers, support for requesting installed passwords (passwd.hashed-password. and passwd.plaintext-password.) has been added using the new secure data transmission mechanism introduced in systemd release 247, which utilizes intermediate files in a separate directory. By default, credentials are accepted from the process with PID1, which receives them from the container management system, allowing for user password setup on first boot.
- In systemd-firstboot, support has been added for using the secure data transmission mechanism to request various system parameters, which can be utilized for initializing system settings during the first boot of a container image that lacks the necessary settings in the /etc directory.
- During the boot process, PID 1 now displays both the unit name and its description. The output can be modified using the parameter 'StatusUnitFormat=combined' in system.conf or the kernel command line option 'systemd.status-unit-format=combined'.
- Nelle utility systemd-machine-id-setup e systemd-repart è stata aggiunta l'opzione «—image» per trasmettere il file dell'identificatore della macchina nelle immagini disco o per aumentare la dimensione dell'immagine disco.
- Nel file di configurazione delle partizioni utilizzato dall'utility systemd-repart è stato aggiunto il parametro MakeDirectories, che può essere utilizzato per creare directory arbitrari nel file system creato prima della riflessione nella tabella delle partizioni (ad esempio, per creare directory nella partizione principale per i punti di mount, in modo da poter montare immediatamente la partizione in modalità di sola lettura). Sono stati aggiunti i parametri Flags, ReadOnly e NoAuto per gestire i flag GPT nelle partizioni create. Nel parametro CopyBlocks è stato implementato il valore «auto» per la selezione automatica della partizione di avvio corrente come sorgente durante la copia dei blocchi (ad esempio, quando è necessario trasferire la propria partizione principale su un nuovo supporto).
- In GPT, the flag "grow-file-system" has been implemented, similar to the x-systemd.growfs mount option, providing automatic resizing of the filesystem to the bounds of the block device if the filesystem size is smaller than the partition. This flag is applicable to Ext3, XFS, and Btrfs filesystems and can be used with automatically detected partitions. By default, the flag is enabled for writable partitions automatically created through systemd-repart. An option 'GrowFileSystem' has been added to systemd-repart for configuring the flag.
- Support for new variables IMAGE_VERSION and IMAGE_ID has been implemented in the file /etc/os-release to define the version and identifier of atomically updated images. Specifiers %M and %A are suggested for substituting these values in various commands.
- A "--extension" parameter has been added to the portablectl utility to activate portable system extension images (for example, they can be used to distribute images with additional services integrated into the root partition).
- L'utility systemd-coredump ora estrae le informazioni ELF build-id durante la creazione del core dump del processo, il che può risultare utile per determinare a quale pacchetto appartiene il processo in errore, se le informazioni sul nome e sulla versione dei pacchetti deb o rpm sono state incorporate nei file ELF.
- In udev è stata aggiunta una nuova base hardware per i dispositivi FireWire (IEEE 1394).
- In udev sono stati apportati tre cambiamenti alla schema di selezione dei nomi delle interfacce di rete 'net_id', che compromettono la retrocompatibilità: i caratteri non validi nei nomi delle interfacce vengono ora sostituiti con '_' ; i nomi degli slot PCI hotplug per i sistemi s390 vengono elaborati sotto forma di numeri esadecimali; è consentito l'uso di fino a 65535 dispositivi PCI integrati (in precedenza i numeri superiori a 16383 venivano bloccati).
- In systemd-resolved è stato aggiunto il dominio 'home.arpa' alla lista NTA (Negative Trust Anchors), raccomandato per le reti domestiche locali, ma non utilizzato in DNSSEC.
- Nell'opzione CPUAffinity è stato implementato l'analisi degli specificatori '%'.
- Nai file '.network' è stata aggiunta l'opzione ManageForeignRoutingPolicyRules, che può essere utilizzata per escludere il trattamento delle politiche di instradamento di terze parti in systemd-networkd.
- Nei file «.network» è stato aggiunto il parametro RequiredFamilyForOnline per determinare la presenza di un indirizzo IPv4 o IPv6 come segnale che l'interfaccia di rete è in stato «online». In networkctl è assicurata la visualizzazione dello stato «online» per ogni link.
- Nei file «.network» è stato aggiunto il parametro OutgoingInterface per definire le interfacce in uscita durante la configurazione dei ponti di rete.
- Nei file «.network» è stato aggiunto il parametro Group, che consente di configurare un gruppo Multipath per le voci nella sezione «[NextHop]».
- In systemd-network-wait-online sono state aggiunte le opzioni «-4» e «-6» per limitare l'attesa della connessione solo a IPv4 o IPv6.
- Nelle impostazioni del server DHCP è stato aggiunto il parametro RelayTarget, che mette il server in modalità DHCP Relay. Per ulteriori configurazioni del relay DHCP, sono state proposte le opzioni RelayAgentCircuitId e RelayAgentRemoteId.
- Nel server DHCP è stato aggiunto il parametro ServerAddress, che consente di impostare esplicitamente l'indirizzo IP del server (altrimenti l'indirizzo viene scelto automaticamente).
- Nel server DHCP è stata implementata la sezione [DHCPServerStaticLease], che consente di configurare collegamenti statici degli indirizzi (DHCP leases), specificando i collegamenti IP fissi agli indirizzi MAC e viceversa.
- Nella configurazione di RestrictAddressFamilies è stata implementata la supporto per il valore "none", che non consentirà al servizio di accedere ai socket di alcuna famiglia di indirizzi.
- Nei file ".network" nelle sezioni [Address], [DHCPv6PrefixDelegation] e [IPv6Prefix] è stata implementata la supporto per la configurazione RouteMetric, che permette di specificare la metrica per il prefisso del percorso creato per l'indirizzo specificato.
- In nss-myhostname e systemd-resolved è stata garantita la sintesi di record DNS con indirizzi per host con il nome speciale "_outbound", per i quali viene sempre restituito un IP locale, scelto in base ai percorsi predefiniti utilizzati per le connessioni in uscita.
- Nei file .network è stata aggiunta nella sezione "[DHCPv4]" la configurazione attiva per impostazione predefinita RoutesToNTP, che prescrive di aggiungere un percorso separato attraverso l'interfaccia di rete corrente per accedere all'indirizzo del server NTP ottenuto per questa interfaccia tramite DHCP (simile alla configurazione DNS, garantisce che il traffico verso il server NTP sarà instradato attraverso l'interfaccia da cui è stato ottenuto questo indirizzo).
- Sono state aggiunte le impostazioni SocketBindAllow e SocketBindDeny per gestire l'accesso ai socket associati al servizio corrente.
- Per i file unit è stata implementata la configurazione condizionale ConditionFirmware, che consente di creare controlli per valutare le funzionalità del firmware, come il funzionamento sui sistemi UEFI e device.tree, oltre a verificare la compatibilità con determinate funzionalità del device-tree.
- È stata realizzata l'opzione ConditionOSRelease per il controllo dei campi nel file /etc/os-release. Per determinare le condizioni di verifica dei valori dei campi sono ammessi gli operatori «=», «!=», «<», «=», «>».
- Nell'utilità hostnamectl, i comandi di tipo «get-xyz» e «set-xyz» non hanno più i prefissi «get» e «set». Ad esempio, invece di «hostnamectl get-hostname» e «hostnamectl set-hostname», ora si può utilizzare il comando «hostnamectl hostname», in cui l'assegnazione di un valore è definita specificando un argomento aggiuntivo («hostnamectl hostname value»). Il supporto per i comandi precedenti è mantenuto per garantire la compatibilità.
- Nell'utilità systemd-detect-virt e nella configurazione ConditionVirtualization, è garantita una corretta identificazione degli ambienti Amazon EC2.
- La configurazione LogLevelMax nei file unit ora si applica non solo ai messaggi di log creati dal servizio, ma anche ai messaggi del processo PID 1 in cui si menziona il servizio.
- È stata fornita la possibilità di includere i dati SBAT (UEFI Secure Boot Advanced Targeting) nei file systemd-boot EFI PE.
- In /etc/crypttab, new options 'headless' and 'password-echo' have been implemented. The first allows skipping all operations related to interactive password and PIN prompts for the user, while the second enables the configuration of how the password input is displayed (nothing shown, character-by-character display, or showing asterisks). The '—echo' option has been added to systemd-ask-password for similar purposes.
- In systemd-cryptenroll, systemd-cryptsetup, and systemd-homed, support for unlocking LUKS2 encrypted partitions using FIDO2 tokens has been expanded. New options '—fido2-with-user-presence', '—fido2-with-user-verification', and '—fido2-with-client-pin' have been added to manage user presence verification, validation, and the need for a PIN input.
- In systemd-journal-gatewayd, options '—user', '—system', '—merge', and '—file', analogous to similar options in journalctl, have been added.
- In addition to direct dependencies between units set by OnFailure and Slice parameters, support for implicit reverse dependencies OnFailureOf and SliceOf has been added, which can be useful, for example, to determine all units included in a slice.
- Sono stati aggiunti nuovi tipi di dipendenze tra i unit: OnSuccess e OnSuccessOf (opposti a OnFailure, chiamati al termine positivo); PropagatesStopTo e StopPropagatedFrom (consentono di propagare l'evento di arresto di un unit su un altro unit); Upholds e UpheldBy (alternativa a Restart).
- Nell'utility systemd-ask-password è stata aggiunta l'opzione «—emoji» per gestire l'apparizione del simbolo del lucchetto (🔐) nella riga di inserimento della password.
- È stata aggiunta la documentazione sulla struttura ad albero dei sorgenti di systemd.
- Per i unit è stata aggiunta la proprietà MemoryAvailable, che mostra quanti MB di memoria rimangono disponibili al unit prima di raggiungere il limite impostato tramite i parametri MemoryMax, MemoryHigh o MemoryAvailable.
Fonte: opennet.ru
