News Ticker

Come mandare in crash systemd

systemd-logo

 

Inutile dirlo, la logica di funzionamento di systemd, che piaccia o meno, può essere comoda per diversi aspetti. La sua ampia integrazione con tutto il sistema Linux porta dei vantaggi, a scapito della semplicità e -ed è proprio il caso di dirlo- della robustezza data dall’avere piccoli software estremamente specializzati ed ottimizzati.

Proprio per questo motivo, systemd ha sempre sofferto di alcune lacune lato sicurezza; l’ultima portata all’attenzione degli utenti, anche se risulta introdotta in un commit risalente a più di 2 anni fa, affligge il sistema di notifica inter-processo di systemd:

NOTIFY_SOCKET=/run/systemd/notify systemd-notify “”

Questo semplice comando, lanciato da qualisiasi utente del sistema, fa si che il PID 1, ovvero quello che si occupa di gestire il sistema di init, si blocchi nella chiamata di sistema pause(). Gli effetti, all’atto pratico, sono i seguenti:

  • Non sarà più possibile avviare e fermare i demoni
  • I servizi inetd non accetteranno più connessioni
  • Non sarà più possibile effettuare un riavvio “pulito” del sistema
  • In generale, l’intero sistema diventerà instabile (ad esempio ssh e su rimangono in attesa fino a 30 secondi)

Nonostante alcuni utenti affermano di poterlo riprodurre solo inserendo il comando all’interno di un ciclo while true, molti ne hanno sempre evidenza.

Nonostante i blocchi del PID 1 non siano così rari, negli ultimi anni problemi di questo tipo affliggono sempre più spesso il nuovo sistema di init integrato e, probabilmente, la casistica è così elevata poichè systemd stesso è così tanto complesso ed introduce così tanti elementi esterni e -normalmente- non necessariamente legati al processo di init, che bug in un progetto di tali dimensioni sono decisamente più comuni.

Un’analisi -critica- più approfondita può essere letta a questo link.

  • Benjamin Sisko

    Bhe…. non fatemi dire che non erano stati avvisati…

  • Carlo Denaro

    la pratica del buon software dice, FAI UNA COSA e FALLA BENE.. non farne 2039209302 e tutte a merda
    esempio di COME non scrivere codice, systemd

  • Benjamin Sisko

    Quando, nonostante la storia insegni, si vuol reinventare la ruota: K.I.S.S !!

  • MEP MEP

    Ed e’ solo l’inizio…spero si torni presto indietro: KISS, molti piccoli progetti, ognuno focalizzato su una funzione e per questa ottimizzato: queste cose hanno permesso la stabilità e le performance di Linux. Sicuramente meglio di un unico minestrone difficile da manutenere/testare con difficoltà per contribuire agli sviluppi futuri.