Dopo tre mesi di sviluppo, è disponibile il rilascio del gestore di sistema systemd 259. Le modifiche principali includono: supporto per la libreria standard Musl, il comando «run0 —empower» per eseguire azioni privilegiate senza cambiare UID, caricamento dinamico di librerie esterne richieste in libsystemd, ignorando i file di configurazione aggiungendo il suffisso «.ignore» al nome.
Tra le novità del nuovo rilascio:
- È stato aggiunto un supporto parziale per la libreria standard C Musl, attivato impostando il valore «musl» nelle opzioni «libc» nel sistema di build Meson. Poiché la libreria Musl non fornisce funzionalità NSS, durante la compilazione di systemd con Musl non sono disponibili i componenti nss-systemd, nss-resolve, systemd-homed, systemd-nsresourced, systemd-userdbd, così come il parametro DynamicUser e la possibilità di avviare systemd-nspawn in modo non privilegiato. Gli sviluppatori di systemd non garantiscono attualmente che il supporto per Musl rimarrà nelle future versioni. La decisione dipenderà dal successo dello sviluppo di un livello intermedio che implementi funzionalità aggiuntive sopra Musl, così come dalla domanda del progetto e dalla segnalazione di errori specifici per Musl.
- Nell'utilità run0, presentata come una sostituzione sicura del programma sudo, che funziona sopra systemd-run, è stata aggiunta l'opzione «—empower», che consente di avviare una nuova sessione con privilegi elevati, senza passare all'utente root. L'esecuzione di azioni privilegiate senza cambiare UID è gestita tramite l'impostazione dei flag di capabilities, come CAP_SYS_ADMIN, sufficienti per accedere alla maggior parte delle chiamate di sistema privilegiate. I processi avviati vengono anche collocati in un gruppo separato «empower», per il quale è fornito l'accesso alla maggior parte delle azioni Polkit.
- È stata presa la decisione di rimuovere nel prossimo rilascio il supporto per gli script di servizio in formato System V. Per l'eliminazione sono previsti i componenti systemd-sysv-install, systemd-rc-local-generator e systemd-sysv-generator. Inoltre, il prossimo rilascio prevede un aumento dei requisiti minimi: kernel 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.
- Nel quadro di un'iniziativa per ridurre le dipendenze, libsystemd ha implementato il caricamento dinamico delle librerie libacl, libblkid, libseccomp, libselinux, e libmount tramite la chiamata dlopen() in situazioni in cui le loro funzioni sono effettivamente necessarie. Tramite dlopen() è stata anche implementata l'interazione con il sottosistema di audit di Linux e con PAM. Le funzionalità precedentemente invocate tramite la libreria intermedia libcap sono state incorporate in libsystemd.
- In systemd-resolved è stata aggiunta la possibilità di allegare gestori locali, attivati ad ogni richiesta di risoluzione dei nomi locali. I gestori vengono collocati nella directory /run/systemd/resolve.hook/.
- Nel database contenente i dati degli utenti è stato aggiunto un campo UUID, e nell'utility userdbctl è stata aggiunta l'opzione "—uuid" per la ricerca tramite UUID.
- È stato previsto l'ignoramento dei file di configurazione con nomi che terminano con ".ignore".
- In systemd-importd è stata implementata una logica di gestione integrata per gli archivi TAR, utilizzando libarchive al posto dell'invocazione dell'utility GNU tar. È stata implementata la possibilità di eseguire systemd-machined e systemd-importd legati agli utenti, piuttosto che a livello di sistema, con il caricamento delle immagini di sistema in ~/.local/state/machines/. Per scegliere la modalità di lavoro, sono state aggiunte all'utility importctl le opzioni "—user" e "—system".
- La modalità di memorizzazione del registro è stata cambiata di default da ‘auto’ a ‘persistent’ (in precedenza la modalità dipendeva dalla presenza della directory /var/log/journal).
- In systemd-networkd e systemd-nspawn è stata interrotta la supporto alla creazione di regole di traduzione degli indirizzi (NAT) tramite iptables/libiptc. È rimasta solo la supporto a nftables.
- In systemd-boot e systemd-stub è stata interrotta la supporto per TPM 1.2 (è rimasta la supporto per TPM 2.0).
- In systemd-machined è stato garantito di default il montaggio di immagini disco "nascoste", i cui nomi iniziano con un punto, in modalità di sola lettura.
- È stata ampliata l'API basata sul protocollo Varlink, che ora può essere utilizzata per accedere alle impostazioni dei servizi. Sono state implementate chiamate IPC Reload() e Reexecute(). Sono state aggiunte chiamate per accedere alle funzionalità e alle impostazioni di systemd-repart, systemd-resolved e systemd-networkd.
- È stata aggiunta l'impostazione ExecReloadPost, che consente di eseguire comandi dopo il riavvio della configurazione del servizio.
- Per i servizi sono state implementate le proprietà OOMKills e ManagedOOMKills, contenenti il numero di processi terminati forzatamente dal kernel o da systemd-oomd per mancanza di memoria.
- Per i servizi temporanei è stata aggiunta la proprietà RootDirectoryFileDescriptor, che determina il descrittore di file della directory radice.
- È stata aggiunta l'impostazione UserNamespacePath, che consente di associare un'unità a uno spazio dei nomi utente (user namespace) specificando un percorso nel file system pseudo /proc, analogamente alle impostazioni IPCNamespacePath e NetworkNamespacePath. In systemd-nspawn è stata aggiunta l'impostazione NamespacePath nella sezione [Network] dei file .nspawn per specificare lo spazio dei nomi di rete.
- In systemd-sysext e systemd-confext è stato implementato il supporto per file di configurazione separati /etc/systemd/systemd-sysext.conf e /etc/systemd/systemd-confext.conf. È stata aggiunta la possibilità di utilizzare le variabili d'ambiente SYSTEMD_SYSEXT_OVERLAYFS_MOUNT_OPTIONS e $SYSTEMD_CONFEXT_OVERLAYFS_MOUNT_OPTIONS per configurare i parametri di montaggio di Overlayfs.
- In systemd-udevd è stata aggiunta l'impostazione OPTIONS=»dump-json» per l'output dello stato dell'evento corrente in formato JSON. Nella funzione net_id è stata implementata la generazione di nomi prevedibili per le interfacce di rete wireless sui sistemi con DeviceTree. È stata garantita la generazione di collegamenti simbolici /dev/gpio/by-id/... per i dispositivi GPIO.
- Nel comando «homectl update» è stata aggiunta la possibilità di utilizzare l'opzione «—recovery-key» per aggiungere chiavi di backup a un'account utente esistente (in precedenza tali chiavi potevano essere aggiunte solo durante la creazione dell'utente).
- In systemd-homed sono state aggiunte le opzioni «—prompt-shell» e «—prompt-groups» per la selezione interattiva della shell e del gruppo durante il primo avvio utilizzando il servizio systemd-homed-firstboot.service. In systemd-firstboot è stata aggiunta l'opzione «—prompt-keymap-auto» per richiedere la disposizione della tastiera durante l'utilizzo della console locale al primo avvio.
- In systemd-boot è stata aggiunta la possibilità di impostare il livello di dettaglio dei log tramite il parametro log-level in loader.conf o nel campo SMBIOS io.systemd.boot.loglevel.
- In systemd-networkd per il server DHCP sono state aggiunte le opzioni EmitDomain e Domain, e implementato un gestore per determinare i nomi degli host forniti tramite DHCP attraverso la risoluzione DNS.
- In systemd-run è stata aggiunta l'opzione «—root-directory» per avviare un servizio nella directory radice specificata. In systemd-run e run0 è stata aggiunta l'opzione «—same-root-dir» («-R») per avviare il servizio nella stessa directory radice dell'invocatore.
- In systemd-modules-load è stata implementata la parallelizzazione del caricamento dei moduli del kernel.
- In systemd-integrity-setup è stato aggiunto il supporto per gli algoritmi HMAC-SHA256, PHMAC-SHA256 e PHMAC-SHA512.
Fonte: opennet.ru
