Hai usato systemd-tmpfiles e ti sei trovato senza /home? Dovevi leggere la documentazione!

Tra i vari rimpiazzi di GRUB, i generatori di BSOD e sostituti di sudo di comandi systemd-qualcosa è ormai pieno Linux. Piaccia o meno, questo è lo standard che tutte le distribuzioni Linux hanno scelto di utilizzare e qui rimarrà, volenti o nolenti.

Certo nella seconda categoria, quella dei “nolenti”, rientra l’utente GitHub jedenastka, che ha aperto una issue nei confronti di Systemd dal titolo “refuse systemd-tmpfiles –purge invocation without config file specified on cmdline“.

L’utente, ingaggiando il comando sudo systemd-tmpfiles --purge che nominalmente dovrebbe pulire i file temporanei, si è ritrovato con strani messaggi a schermo riferiti alla sua home directory ed allarmato ha premuto Ctrl+C per stoppare tutto e trovarsi subito dopo con grosse porzioni della home directory cancellate.

Fortunatamente l’utente l’ha presa bene, aprendo la issue e specificando, verrebbe da dire legittimamente, come probabilmente uno specifico warning all’interno della spiegazione dei comandi che si ottiene invocando systemd-tmpfiles --help potrebbe in qualche modo evitare il verificarsi di simili situazioni.

Curiosa la risposta che uno degli sviluppatori di Systemd inserisce nel thread della issue (e che Phoronix racconta):

So an option that is literally documented as saying “all files and directories created by a tmpfiles.d/ entry will be deleted”, that you knew nothing about, sounded like a “good idea”? Did you even go and look what tmpfiles.d entries you had beforehand?

Maybe don’t just run random commands that you know nothing about, while ignoring what the documentation tells you? Just a thought eh

Quindi un’opzione che è letteralmente documentata come “tutti i file e le directory creati da una voce presente in tmpfiles.d/ verranno eliminati”, di cui non sapevi nulla, sembrava una “buona idea”? Sei andato a vedere prima quali voci tmpfiles.d avevi?
Forse non dovresti semplicemente eseguire comandi a caso di cui non sai nulla, ignorando ciò che ti dice la documentazione? Solo un pensiero eh

Quindi, verrebbe da dire, cornuto e mazziato. Anche perché, a dispetto di quanto recita il solerte sviluppatore (e che ricorda l’atteggiamento di un suo collega Debian maintainer di cui abbiamo parlato recentemente a proposito di KeePassXC) la prima cosa che appare digitando --help per il comando è la specifica descrizione “Creates, deletes and cleans up volatile and temporary files and directories.” e quindi a tutto pare riferirsi, tranne che alla home directory.

Fortunatamente la questione è rientrata in fretta, con Lennart Poettering in persona a chiarire come:

I think we should fail –purge if no config file is specified on the command line. I see no world where an invocation without one would make sense, and it would have caught the problem here.

Penso che dovremo far fallire l’opzione –purge se non è stato specificata una configurazione a linea di comando. Non vedo dove un’invocazione senza l’opzione potrebbe avere senso, ed avrebbe intercettato il problema qui.

Portando alla patch che è stata inclusa in Systemd 256.1.

Tutto è bene quel che finisce bene? Forse. Di sicuro i file della home dell’utente che ha aperto la issue originale non la pensano così, ma in teoria questo genere di problemi non dovrebbe più ripetersi.

Chiosa finale sulla totale mancanza di empatia da parte dello sviluppatore che ha bollato come “pollo” l’autore della issue: quando i dati non sono i tuoi, e sei dietro uno schermo a digitare su una tastiera, è tutto molto più facile.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

9 risposte a “Hai usato systemd-tmpfiles e ti sei trovato senza /home? Dovevi leggere la documentazione!”

  1. Avatar Mauro Miatello
    Mauro Miatello

    non ho sinceramente capito cosa significhi "creati da una voce tmpfiles.d/"

  2. Avatar JustATiredMan
    JustATiredMan

    no mi dispiace, ma è una cavolata. Non esiste che qualcosa che abbia a che fare con la gestione di files temporanei, si permetta di cancellare files al di fuori di quel contesto, e men che meno nelle home directories degli utenti.
    Systemd è un obbrobrio ed è troppo invasivo, che poi tutte le distro lo adottino, anche per buone ragioni, non vuol dire che sia un buon prodotto… se la bontà di un prodotto fosse solo per la sua diffusione, anche Windows allora dovrebbe essere considerato un buon prodotto 😀

  3. Avatar Raoul Scarazzini

    Ho provato a perfezionare la traduzione, in ogni caso dalla man page:

    […] If only the basename of a configuration file is specified, all configuration directories as specified in tmpfiles.d(5) are searched for a matching file and the file found that has the highest priority is executed.

  4. Avatar Black_Codec

    Dice che cancella i file creati da una voce presente in tmpfiles.d… non leggo scritto i file della tmp…

  5. Avatar Raoul Scarazzini

    La descrizione del comando è "Creates, deletes and cleans up volatile and temporary files and directories.", tolto il nome che è un rimando chiaro alla cartella /tmp, in ogni caso si parla di file temporanei, mentre invece per come erano impostate le cose il risultato di default era "la qualunque".

  6. Avatar Alessandro Scarozza
    Alessandro Scarozza

    ciao, potresti approfondire cosa sia tmpfiles.d ? da ignorante dell'argomento la cosa che mi fa piu strano è che la home venga creata da una "cosa" chiamata tmpfiles

  7. Avatar Raoul Scarazzini

    Se fai man tmpfiles.d ti diventa tutto chiaro, di fatto si tratta di configurazioni lette da una di queste cartelle:
    /etc/tmpfiles.d/*.conf
    /run/tmpfiles.d/*.conf
    /usr/lib/tmpfiles.d/*.conf
    lì dentro viene specificata qualsiasi cosa e come recita la man page: It is mostly commonly used for volatile and temporary files and directories.
    Da qui tutto il macello che ne è derivato.

  8. Avatar Alessandro Scarozza
    Alessandro Scarozza

    continuo a non capire perchè la /home rientri nelle condizioni di “volatile and temporary”. cioè apparentemente il problema non è di systemd ma di come viene gestita la home no ?

  9. Avatar Raoul Scarazzini

    Se leggi la issue lo spiega:

    "I talked about this on #debian-next, and seems that this is not a bug, but a feature, as systemd-tmpfiles also handles autocreating data directories such as /home, and the –purge flag is meant to wipe them clean. I am unsure what's the utility of that, but I assume there is a good reason."

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *