Dopo cinque mesi di sviluppo rilascio del gestore di sistema . Tra le novità si segnala l'integrazione nel PID 1 di un gestore per la memoria insufficiente del sistema, il supporto per l'allegato di programmi BPF personalizzati per filtrare il traffico dei unit, numerose nuove opzioni per systemd-networkd, modalità di monitoraggio della larghezza di banda delle interfacce di rete, utilizzo per impostazione predefinita su sistemi a 64 bit di numeri PID a 22 bit invece di 16 bit, transizione verso una gerarchia unificata di cgroups, inclusione nel systemd-network-generator.
Variazioni principali:
- Nel gestore PID 1 è stata aggiunta la rilevazione dei segnali generati dal kernel riguardanti la memoria insufficiente (Out-Of-Memory, OOM) per trasferire i unit che hanno raggiunto il limite di consumo della memoria in uno stato speciale con la possibilità opzionale di terminarli o fermarli forzatamente;
- Per i file di unit sono state implementate nuove opzioni IPIngressFilterPath e
IPEgressFilterPath, che consentono di collegare programmi BPF con gestori arbitrari per filtrare i pacchetti IP in ingresso e in uscita generati dai processi associati a questo unit. Le funzionalità proposte permettono di creare una sorta di firewall per i servizi systemd. di un semplice filtro di rete basato su BPF; - All'utilità systemctl è stato aggiunto il comando «clean» per rimuovere la cache, i file di runtime, le informazioni sullo stato e le directory dei log;
- In systemd-networkd è stato aggiunto il supporto per le interfacce di rete MACsec, nlmon, IPVTAP e Xfrm;
- In systemd-networkd è stata implementata la configurazione separata degli stack DHCPv4 e DHCPv6 tramite le sezioni «[DHCPv4]» e «[DHCPv6]» nel file di configurazione. È stata aggiunta l'opzione RoutesToDNS per aggiungere una rotta separata al server DNS specificato nei parametri ricevuti dal server DHCP (in modo che il traffico verso il DNS venga inviato attraverso lo stesso link della rotta principale ricevuta dal DHCP). Per DHCPv4 sono state aggiunte nuove opzioni: MaxAttempts — numero massimo di richieste per ottenere un indirizzo, BlackList — elenco nero dei server DHCP, SendRelease — abilitazione dell'invio di messaggi DHCP RELEASE al termine della sessione;
- Nell'utilità systemd-analyze sono stati aggiunti nuovi comandi:
- «systemd-analyze timestamp» — analisi e trasformazione del tempo;
- «systemd-analyze timespan» — analisi e trasformazione degli intervalli di tempo;
- «systemd-analyze condition» — analisi e test delle espressioni ConditionXYZ;
- «systemd-analyze exit-status» — analisi e trasformazione dei codici di stato di uscita da numeri a nomi e viceversa;
- «systemd-analyze unit-files» — visualizza l'elenco di tutti i percorsi dei file per le unità e gli alias delle unità.
- Le opzioni SuccessExitStatus, RestartPreventExitStatus e
RestartForceExitStatus ora supportano non solo codici di uscita numerici, ma anche i loro identificatori testuali (ad esempio «DATAERR»). È possibile visualizzare l'elenco delle associazioni dei codici agli identificatori tramite il comando «systemd-analyze exit-status»; - L'utilità networkctl ha aggiunto il comando «delete» per rimuovere i dispositivi di rete virtuali, nonché l'opzione «—stats» per visualizzare le statistiche sui dispositivi;
- Sono state aggiunte al networkd.conf le impostazioni SpeedMeter e SpeedMeterIntervalSec per misurazioni periodiche della larghezza di banda delle interfacce di rete. Le statistiche ottenute dai risultati delle misurazioni possono essere visualizzate nell'output del comando ‘networkctl status’;
- È stata aggiunta una nuova utilità systemd-network-generator per generare file
.network, .netdev e .link basati sulle impostazioni IP fornite al momento dell'avvio tramite la riga di comando del kernel Linux in formato di configurazione Dracut; - Il valore sysctl «kernel.pid_max» sui sistemi a 64 bit è ora impostato di default a 4194304 (PID a 22 bit invece di 16 bit), il che riduce la probabilità di collisioni nell'assegnazione dei PID, aumenta il limite sul numero di processi avviati contemporaneamente e ha un impatto positivo sulla sicurezza. Potenzialmente, questa modifica potrebbe causare problemi di compatibilità, ma in pratica non sono state segnalate tali problematiche;
- Di default, durante la fase di compilazione, è stato effettuato il passaggio a una gerarchia unificata cgroups-v2 («-Ddefault-hierarchy=unified»). In precedenza, per impostazione predefinita era impostato il modo ibrido («-Ddefault-hierarchy=hybrid»);
- È stato modificato il comportamento del filtro delle chiamate di sistema (SystemCallFilter), che ora termina l'intero processo in caso di chiamata a una chiamata di sistema vietata, anziché terminare thread separati, poiché la chiusura di thread singoli potrebbe portare a problemi imprevedibili. Queste modifiche hanno effetto solo con il kernel Linux 4.14+ e libseccomp 2.4.0+;
- Le applicazioni non privilegiate possono ora inviare pacchetti ICMP Echo (ping) grazie all'impostazione sysctl «net.ipv4.ping_group_range» per l'intero intervallo di gruppi (per tutti i processi);
- Per accelerare il processo di costruzione, per impostazione predefinita, è stata disattivata la generazione delle guide man (per costruire la documentazione completa è necessario utilizzare l'opzione «-Dman=true» o «-Dhtml=true» per le guide in formato html). Per semplificare la consultazione della documentazione, sono inclusi nel pacchetto due script build/man/man e build/man/html per la generazione e l'anteprima delle guide desiderate;
- Per gestire i nomi di dominio con simboli degli alfabeti nazionali, per impostazione predefinita, è stata utilizzata la libreria libidn2 (per tornare a libidn è necessario utilizzare l'opzione «-Dlibidn=true»);
- È stata interrotta l'assistenza per il file eseguibile /usr/sbin/halt.local, che forniva una funzionalità che non ha ottenuto un'adeguata diffusione nelle distribuzioni. Per organizzare l'esecuzione dei comandi al termine del processo, si consiglia di utilizzare script in /usr/lib/systemd/system-shutdown/ o di definire una nuova unità, dipendente da final.target;
- Nella fase finale di spegnimento, systemd ora aumenta automaticamente il livello di log in sysctl «kernel.printk», risolvendo il problema della visualizzazione nei log degli eventi che si verificano nelle fasi tardive di spegnimento, quando i demoni di logging standard sono già terminati;
- In journalctl e in altre utilità di visualizzazione dei log, è stata introdotta la colorazione degli avvisi in giallo e delle registrazioni di audit in blu per evidenziarle visivamente dal resto;
- Nella variabile d'ambiente $PATH, il percorso verso bin/ ora precede quello di sbin/, cioè in presenza di nomi di file eseguibili identici in entrambe le directory, verrà eseguito il file da bin/;
- In systemd-logind è stato abilitato il richiamo di SetBrightness() per modificare in sicurezza la luminosità dello schermo per ciascuna sessione;
- È stato aggiunto al comando «udevadm info» il flag «—wait-for-initialization» per attendere il completamento dell'inizializzazione del dispositivo;
- Durante il processo di avvio del sistema, il gestore PID 1 ora visualizza sullo schermo i nomi delle unità, anziché una stringa con le loro descrizioni. Per ripristinare il comportamento precedente, è possibile utilizzare l'opzione StatusUnitFormat in /etc/systemd/system.conf o il parametro del kernel systemd.status_unit_format;
- In /etc/systemd/system.conf per watchdog in PID 1 è stata aggiunta l'opzione KExecWatchdogSec, che definisce il timeout per il riavvio utilizzando kexec. La vecchia impostazione
ShutdownWatchdogSec è stata rinominata in RebootWatchdogSec e definisce il timeout per il funzionamento durante il processo di spegnimento o riavvio normale; - Per i servizi è stata aggiunta una nuova opzione , consentendo di impostare comandi che verranno eseguiti prima di ExecStartPre. In base al codice di errore restituito dal comando, si decide se continuare l'esecuzione dell'unità: se viene restituito il codice 0, l'avvio dell'unità continua; se il codice è compreso tra 1 e 254, si conclude silenziosamente senza segnalazione di errore; se è 255, si conclude con segnalazione di errore;
- Aggiunto un nuovo servizio systemd-pstore.service per estrarre dati da sys/fs/pstore/ e salvarli in /var/lib/pstore per ulteriori analisi;
- Nel comando timedatectl sono stati aggiunti nuovi comandi per configurare i parametri NTP per systemd-timesyncd in relazione alle interfacce di rete;
- Nel comando 'localectl list-locales' è stata sospesa la visualizzazione delle localizzazioni diverse da UTF-8;
- Garantito l'ignorare gli errori durante l'assegnazione delle variabili nei file sysctl.d/, se il nome della variabile inizia con il simbolo '-';
- Servizio ora è completamente responsabile dell'inizializzazione del pool di entropia del generatore di numeri pseudocasuali del kernel Linux. I servizi che richiedono che /dev/urandom sia correttamente inizializzato devono essere avviati dopo systemd-random-seed.service;
- Nel bootloader systemd-boot è stata fornita la possibilità opzionale di mantenere con una sequenza casuale nella partizione del sistema EFI (ESP);
- Nell'utility bootctl sono stati aggiunti nuovi comandi 'bootctl random-seed' per generare un file di seed nell'ESP e 'bootctl is-installed' per controllare l'installazione del bootloader systemd-boot. In bootctl è stato anche implementato l'output di avvisi per configurazioni errate delle voci di avvio (ad esempio, quando l'immagine del kernel è stata rimossa, ma la voce per il suo avvio è rimasta);
- Garantita la selezione automatica della partizione di swap quando il sistema entra in modalità di sospensione. La partizione viene scelta in base alla priorità configurata per essa, e in caso di priorità uguali, alla quantità di spazio libero;
- In /etc/crypttab è stata aggiunta l'opzione keyfile-timeout per impostare il tempo di attesa del dispositivo con la chiave di crittografia prima di visualizzare la richiesta di password per accedere alla partizione crittografata;
- Aggiunta l'opzione IOWeight per impostare il peso di I/O per lo scheduler BFQ;
- In systemd-resolved è stata aggiunta una modalità di lavoro 'strict' per DNS-over-TLS e implementata la possibilità di memorizzare solo risposte DNS positive ('Cache no-negative' in resolved.conf);
- Per VXLAN in systemd-networkd è stata aggiunta l'opzione GenericProtocolExtension per attivare le estensioni del protocollo VXLAN. Per VXLAN e GENEVE è stata aggiunta l'opzione IPDoNotFragment per impostare il flag di divieto di frammentazione per i pacchetti in uscita;
- In systemd-networkd nella sezione «[Route]» è stata introdotta l'opzione FastOpenNoCookie per abilitare il meccanismo di apertura rapida delle connessioni TCP (TFO — TCP Fast Open, RFC 7413) legato a singole tracce, e l'opzione TTLPropagate per configurare TTL LSP (Label Switched Path). Nella opzione «Type» è stato garantito il supporto per le modalità di instradamento local, broadcast, anycast, multicast, any e xresolve;
- In systemd-networkd nella sezione «[Network]» è stata proposta l'opzione DefaultRouteOnDevice per la configurazione automatica della rotta predefinita per un dato dispositivo di rete;
- In systemd-networkd per i ponti di rete sono state aggiunte le opzioni ProxyARP e
ProxyARPWifi per configurare il comportamento del proxy ARP, MulticastRouter per definire i parametri di instradamento in modalità multicast, MulticastIGMPVersion per modificare la versione IGMP (Internet Group Management Protocol) per il multicast; - In systemd-networkd per i tunnel FooOverUDP sono state aggiunte le opzioni Local, Peer e PeerPort per configurare gli indirizzi IP dei lati locale e remoto, oltre al numero di porta di rete. Per i tunnel TUN è stata aggiunta l'opzione VnetHeader per configurare il supporto GSO (Generic Segment Offload);
- In systemd-networkd nei file .network e .link nella sezione [Match] è stata introdotta l'opzione Property, che consente di identificare i dispositivi in base a proprietà specifiche in udev;
- In systemd-networkd per i tunnel è stata aggiunta l'opzione AssignToLoopback, che gestisce il collegamento dell'estremità del tunnel all'interfaccia loopback «lo»;
- In systemd-networkd è stata automatizzata l'attivazione dello stack IPv6 in caso venga bloccato tramite sysctl disable_ipv6 — IPv6 viene attivato se le impostazioni IPv6 (statiche o DHCPv6) sono definite per l'interfaccia di rete, altrimenti il valore sysctl già impostato non viene modificato;
- Nei file .network la configurazione CriticalConnection è stata sostituita dall'opzione KeepConfiguration, che offre maggiore controllo per definire le situazioni («yes», «static», «dhcp-on-stop», «dhcp») in cui systemd-networkd non deve toccare le connessioni già esistenti all'avvio;
- Vulnerabilità risolta , causata dalla mancanza di controllo degli accessi all'interfaccia D-Bus di systemd-resolved. Il problema consente a un utente non privilegiato di eseguire operazioni disponibili solo per gli amministratori, come ad esempio modificare le impostazioni DNS e reindirizzare le richieste DNS a un server di sostituzione;
- Vulnerabilità risolta , legata alla non attivazione di pam_systemd per sessioni non interattive, che consente di organizzare lo spoofing della sessione attiva.
Fonte: opennet.ru
