Dopo sei mesi di sviluppo è stato presentato il rilascio del gestore di sistema systemd 257 Principali novità: nuove utilità systemd-sbsign e systemd-keyutil, supporto per MPTCP se attivato su socket, supporto iniziale per la compilazione con la libreria Musl C, il. Utilità updatectl per la gestione dell'installazione degli aggiornamenti tramite systemd-sysupdate, la possibilità di eseguire servizi in spazi dei nomi PID separati, protezione contro la cancellazione accidentale di file quando si utilizza "systemd-tmpfiles —purge".
Tra le novità della nuova release:
- Добавлена новая утилита systemd-sbsign для заверения цифровой подписью исполняемых файлов в формате PE (Portable Executable), предназначенных для использования при загрузке в режиме EFI Secure Boot. Для формирования подписи могут использоваться движки и провайдеры, предоставляемые библиотекой OpenSSL. Systemd-sbsign может применяться в качестве альтернативы приложениям sbsigntool и pesign в утилите ukify при формировании универсальных образов ядра UKI (Unified Kernel Image), объединяющих в одном файле загрузчик для UEFI (UEFI boot stub), образ ядра Linux e l'ambiente di sistema initrd caricato in memoria.
- È stata aggiunta una nuova utility, systemd-keyutil, che implementa varie operazioni su chiavi private e certificati X.509. Ad esempio, systemd-keyutil può essere utilizzato per testare la capacità di caricare chiavi e certificati privati ed estrarre da essi chiavi pubbliche in formato PEM.
- Nelle unità ".socket" utilizzate per garantire il funzionamento del meccanismo di attivazione del socket (avvio dei processi quando si tenta di stabilire una connessione di rete), è implementato il supporto per MPTCP (Multipath TCP), un'estensione del protocollo TCP per organizzare il funzionamento di una connessione TCP con la consegna simultanea di pacchetti lungo più percorsi attraverso diverse interfacce di rete associate a diverse indirizzi IP.
- Include le modifiche necessarie per creare utilizzando la libreria Musl C standard.
- В различные компоненты systemd, выводящие индикаторы прогресса выполнения операций (например, systemd-repart, systemd-sysupdate/updatectl и importctl), добавлена возможность использования ANSI-последовательностей для анимирования отображения прогресса. Подобные последовательности пока поддерживаются только в Windows Terminal (предполагается, что со временем подобная возможность будет перенесена и в эмуляторы терминалов для Linux).
- Le funzionalità del componente systemd-sysupdate sono state ampliate, utilizzato per rilevare, scaricare e installare automaticamente gli aggiornamenti utilizzando un meccanismo atomico per la sostituzione di partizioni, file o directory (vengono utilizzate due partizioni/file/directory indipendenti, una delle quali contiene l'attuale versione funzionante risorsa e l'altro installa quello successivo) aggiornamento, dopo il quale le sezioni/file/directory vengono scambiate). In pratica systemd-sysupdate è già utilizzato nel sistema operativo GNOME.
Oltre al processo systemd-sysupdate, è stato aggiunto un servizio con lo stesso nome che consente di utilizzare D-Bus per gestire gli aggiornamenti di sistema da parte di un utente non privilegiato. Per gestire il servizio è inclusa anche una nuova utility updatectl. Aggiunto il flag "--offline" a systemd-sysupdate per disabilitare il download dei metadati sulla rete e utilizzare solo le versioni già scaricate sul sistema locale. Aggiunto il supporto per l'output in formato JSON per tutti i comandi.
- Per i servizi è stata implementata una nuova proprietà “PrivatePIDs” con la quale è possibile organizzare l'avvio di processi con PID 1 (processo init) in uno spazio di identificazione del processo separato (spazio dei nomi PID). Nell'ambiente creato per il processo avviato, saranno visibili solo i processi dello spazio dei nomi creato per esso.
- Aggiunto il supporto per le corrispondenze senza distinzione tra maiuscole e minuscole alle regole udev (ad esempio 'ATTR{foo}==i»abcd»'). Usando udev, è possibile fornire agli utenti locali non privilegiati l'accesso (“uaccess”) al dispositivo /dev/udmabuf, necessario per lavorare con le telecamere IPMI tramite libcamera. udev fornisce il riconoscimento di vari portafogli crittografici hardware con un'interfaccia USB e l'impostazione della proprietà ID_HARDWARE_WALLET per essi, che consente di applicare loro la modalità "uaccess" per l'accesso da parte di utenti non privilegiati.
- Nuovi campi RELEASE_TYPE, EXPERIMENT e EXPERIMENT_URL sono stati aggiunti al file /etc/os-release. "RELEASE_TYPE" può assumere i valori "experimental", "development", "stable" e "lts" per separare le versioni stabili dalle build di sviluppo e sperimentali. I parametri EXPERIMENT e EXPERIMENT_URL hanno lo scopo di spiegare l'essenza della build sperimentale.
- L'utilità run0, sviluppata in sostituzione del programma sudo, ha aggiunto l'opzione "--shell-prompt-prefix", che specifica la stringa del prefisso per il prompt della shell dei comandi. Per impostazione predefinita, l'emoji "🦸" viene visualizzato come prefisso per evidenziare visivamente una sessione con privilegi elevati.
- In systemd-tmpfiles, per evitare di eliminare accidentalmente i file errati, l'opzione "--purge" ora si applica solo alle impostazioni in tmpfiles.d/ che hanno il flag "$" impostato esplicitamente. L'operazione "--purge" ora richiede anche la specifica di almeno un file dalla directory tmpfiles.d/. Per le stringhe di tipo 'L' è stato aggiunto il flag '?', quando specificato verrà creato un collegamento simbolico solo se il file di destinazione esiste.
- Nel gestore servizi e nelle utilità correlate, il codice di tracciamento del processo continua a essere convertito per utilizzare PIDFD anziché PID. Un PIDFD è associato a un processo specifico e non cambia, mentre un PID può essere associato a un altro processo dopo che il processo corrente associato a quel PID termina.
- Per i servizi è ora possibile specificare il valore “debug” nel parametro “RestartMode”, in cui il servizio fallito verrà riavviato con la modalità debug abilitata (è impostata la variabile d'ambiente DEBUG_INVOCATION=1) e il valore LogLevelMax sarà temporaneamente elevato al livello di debug.
- Il gestore PID 1 ha la capacità di caricare regole per il modulo LSM IPE (Integrity Policy Enforcement), che definiscono la politica di integrità per l'intero sistema (quali operazioni sono consentite e come deve essere verificata l'autenticità dei componenti).
- Ai file unit “.timer” è stata aggiunta l'opzione “DeferReactivation” che consente di saltare la successiva attivazione del timer se il servizio non ha ancora completato la sua esecuzione dall'ultima attivazione.
- Nel parametro del file unitario PrivateUsers, è ora possibile specificare il valore "identità" per abilitare la mappatura degli ID utente durante la creazione di uno spazio dei nomi utente.
- Aggiunto il supporto per il valore "disconnected" al parametro del file unit PrivateTmp, che utilizzerà istanze tmpfs separate per le directory /tmp/ e /var/tmp/.
- Il supporto per le nuove modalità "private" e "strict" è stato aggiunto al parametro del file di unità ProtectControlGroups. Quando impostato, viene creato un nuovo spazio dei nomi cgroup per il servizio e cgroupfs viene montato. Quando è impostata l'opzione “strict”, cgroupfs è montato in modalità di sola lettura.
- I parametri StateDirectory, RuntimeDirectory, CacheDirectory, LogsDirectory e ConfigurationDirectory forniscono la possibilità di utilizzare il flag ':ro' per limitare l'accesso alle directory corrispondenti alla modalità di sola lettura.
- Aggiunto supporto per il valore "firmware" al parametro della riga di comando del kernel "systemd.machine_id", in cui l'identificatore di sistema (ID macchina) verrà calcolato in base all'UUID da SMBIOS/DeviceTree.
- Добавлена поддержка системных вызовов mseal(), listmount() и statmount(), появившихся в недавних выпусках ядра Linux.
- Le utilità risolverectl, timedatectl e systemd-inhibit ora supportano l'autorizzazione interattiva utilizzando Polkit.
- Aggiunta la possibilità di utilizzare il flag "--now" nel comando "reenable" all'utilità systemctl.
- Aggiunta l'opzione "--json" all'utilità systemd-mount per l'output in formato JSON (ad esempio, se specificato insieme a "--list-devices", verrà visualizzato un elenco di dispositivi in formato JSON).
- Aggiunte le opzioni "-l" e "--full" all'utilità "localectl" per disabilitare il taglio delle righe lunghe durante l'output.
- A sleep.conf è stata aggiunta l'opzione HibernateOnACPower, che consente di ritardare il passaggio alla modalità di sospensione fino a quando il dispositivo non viene disconnesso dalla fonte di alimentazione fissa.
- In systemd-sysusers è stato aggiunto il supporto per il modificatore "!" alle righe "u", con il quale è possibile creare account utente completamente bloccati (in precedenza, l'impostazione di una password errata veniva utilizzata per bloccare un utente, che, ad esempio, non ha portato al blocco durante l'autenticazione della chiave in SSH).
- Systemd-coredump aggiunge un'opzione "EnterNamespace" che consente l'accesso allo spazio del punto di montaggio di qualsiasi processo andato in crash per ottenere i relativi simboli di debug. In pratica, l'opzione può essere utile per organizzare il backtrace dei file core da applicazioni eseguite in contenitori isolati.
- systemd-logind include l'elaborazione della combinazione Ctrl-Alt-Shift-Esc per inviare il segnale org.freedesktop.login1.SecureAttentionKey ai componenti dell'ambiente utente con una richiesta di visualizzare una finestra di dialogo di accesso sicuro. Implementata l'impostazione "DesignatedMaintenanceTime" per pianificare automaticamente il completamento del lavoro a un'ora specificata. Per analogia con il supporto per i dispositivi DRM ed evdev, è stato aggiunto il supporto per configurare l'accesso per utenti non privilegiati per nascondere i dispositivi (controller di gioco e joystick).
- systemd-machined ora supporta gli accessi client senza privilegi. macchine virtuali e contenitori. L'accesso alle funzionalità elaborate da systemd è fornito tramite l'API Varlink, oltre che tramite D-Bus.
- Una nuova sezione "[IPv6AddressLabel]" è stata aggiunta al file di configurazione networkd.conf per configurare etichette e prefissi per gli indirizzi IPv6
- Aggiunta l'opzione "--stdin" al comando 'networkctl edit' per ottenere il contenuto del file dal flusso standard. Aggiunto supporto per la modifica e la visualizzazione di file .netdev specificando un'interfaccia di rete nei comandi "networkctl edit" e "networkctl cat". Aggiunta l'opzione "--no-ask-password" per disabilitare l'autorizzazione interattiva.
- Aggiunta un'opzione "--certificate-source" alle utility ukify, bootctl, systemd-keyutil, systemd-measure, systemd-repart e systemd-sbsign per caricare un certificato X.509 tramite il provider OpenSSL invece di caricarlo direttamente da un file.
- systemd-boot aggiunge la possibilità di utilizzare i pulsanti del volume per spostarsi su e giù nel menu di avvio, il che può essere utile su dispositivi come gli smartphone. Il supporto per l'installazione del database UEFI Secure Boot in formato ESL(db/dbx/…) per systemd-boot è stato aggiunto all'utilità bootctl.
- Aggiunta l'opzione "--list-invocation" a journalctl per mostrare un elenco di chiamate di unità e l'opzione "--invocation" ("-I") per mostrare i registri associati solo a una chiamata specifica.
- systemd-nspawn aggiunge il supporto per l'uso non privilegiato di FUSE (Filesystem in Userspace) nei contenitori. Quando si utilizza l'opzione "--bind-user", le chiavi SSH dell'utente necessarie per l'accesso tramite SSH vengono inoltrate al contenitore.
- libsystemd ha aggiunto una nuova interfaccia di programmazione "sd-json" che utilizza il formato JSON, nonché un'interfaccia "sd-varlink" che utilizza IPC Varlink.
- La versione del kernel di base consigliata è stata aggiornata alla versione 5.4, creata nel 2019. L'anno prossimo intendono smettere di supportare i kernel più vecchi e contrassegnare la versione 5.4 come la versione base minima supportata.
- Il supporto per cgroups v1 è stato deprecato ed è disabilitato per impostazione predefinita (per abilitarlo, è necessario specificare SYSTEMD_CGROUP_ENABLE_LEGACY_FORCE=1 sulla riga di comando del kernel oltre ad abilitarlo nelle impostazioni di systemd). La prossima versione di systemd 258 prevede di rimuovere completamente il codice relativo a cgroups v1. È inoltre previsto che la versione 258 di Systemd rimuova il supporto per gli script di servizio System V.
Fonte: opennet.ru
