È stata pubblicata una versione correttiva del gestore di sistema systemd 256.1, in cui è stato risolto un problema che portava alla cancellazione del contenuto della directory /home durante l'esecuzione del comando «systemd-tmpfiles —purge», introdotto in systemd 256 per eliminare tutti i file e le cartelle create tramite le impostazioni in tmpfiles.d.
Nelle note di rilascio di systemd 256 e nella guida man di systemd-tmpfiles, è stato indicato che l'opzione «—purge» rimuove tutti i file e le cartelle create dalle impostazioni tmpfiles.d, ma il nome «tmpfiles» nel nome dell'utilità era fuorviante e creava l'impressione che la rimozione riguardasse solo i file temporanei.
Tuttavia, le impostazioni di tmpfiles.d non sono limitate ai file temporanei e vengono utilizzate anche per la creazione automatica di directory inesistenti con dati. In particolare, la cancellazione del contenuto delle directory home è spiegata dal fatto che tramite il file «/usr/lib/tmpfiles.d/home.conf» è stata creata la directory «/home» e, di conseguenza, il comando «systemd-tmpfiles —purge» portava alla sua cancellazione.
Inizialmente, il messaggio di errore fu respinto da Luca Boccassi, sviluppatore di systemd in Microsoft, nel seguente modo: «Quindi, la funzione che è letteralmente documentata come “tutti i file e le cartelle creati dalla registrazione tmpfiles.d saranno rimossi”, cosa di cui non sapevate, suonava come “una buona idea”? Sei almeno andato a controllare quali registrazioni tmpfiles.d avevi in precedenza? Forse non dovresti semplicemente eseguire comandi a caso di cui non sai nulla, ignorando ciò che ti dice la documentazione? Solo un pensiero, ah». In risposta, è stato fatto notare che nella documentazione l'utilità systemd-tmpfiles è ancora descritta come “uno strumento per creare, eliminare e pulire file e directory non permanenti e temporanei”, anche se ciò non corrisponde più alla realtà da tempo.
Alla fine, dopo lunghe discussioni negli ultimi giorni, il comportamento di systemd-tmpfiles è stato riconosciuto errato e modificato. Inizialmente, per evitare l'eliminazione accidentale delle directory home, gli sviluppatori di systemd intendevano rimuovere l'opzione «—purge», ma poi hanno adottato una modifica che limita l'ambito del comando «systemd-tmpfiles —purge» — questo comando può ora essere eseguito solo specificando esplicitamente nella riga di comando un determinato file di configurazione da tmpfiles.d e porterà alla rimozione solo dei file e delle directory ad esso correlati. Inoltre, nella guida man di systemd-tmpfiles è stata aggiunta una descrizione più dettagliata dell'opzione e un avviso riguardo le possibili conseguenze.
Fonte: opennet.ru
