Pred pár dňami sme sa tu na blogu podelili o novinku o vydaní systemd verzie 256 , čo bola verzia, ktorá priniesla veľké množstvo zmien a nových funkcií a medzi nimi bol aj nástroj run0, o ktorom by sme mohli povedať, že bol hlavným lákadlom tohto vydania.
Dôvodom zmienky o systemd 256 je oznámenie vydania opravnej verzie systemd 256.1 . Táto verzia bola vydaná s cieľom riešiť kritický problém, ktorý sa objavil vo verzii 256.
Tento problém ovplyvňoval nesprávne vymazanie obsahu oddielu /home pri spustení príkazu systemd-tmpfiles --purge . Pôvodne bola táto možnosť určená na vymazanie súborov a adresárov vytvorených prostredníctvom konfigurácií v súbore tmpfiles.d, ale správanie nezodpovedalo dokumentácii a očakávaniam používateľa.
Konkrétnym problémom bolo, že názov „tmpfiles“ v utilite bol zavádzajúci, pretože parameter `--purge` nielenže odstránil dočasné súbory, ale ovplyvnil aj adresáre a súbory automaticky vytvorené prostredníctvom konfigurácií v súbore `tmpfiles.d`. To zahŕňalo automatické vytváranie dátových adresárov, ako napríklad domovský adresár v súbore `/home`.
Napríklad súbor /usr/lib/tmpfiles.d/home.conf bol zodpovedný za vytvorenie štruktúry adresárov v /home a neúmyselné použitie príkazu systemd-tmpfiles --purge odstránilo tieto adresáre a ich obsah namiesto očakávaného vyčistenia dočasných súborov.
Preto bola vydaná opravná verzia systemd 256.1, aby sa vyriešili tieto nezrovnalosti a problémy hlásené používateľmi a tiež aby sa správne zosúladila funkcia –purge s pôvodným účelom, aby sa zabezpečilo, že odstráni iba dočasné súbory a neovplyvní štruktúru adresárov. vytvorené prostredníctvom konfigurácií v tmpfiles.d.
Za zmienku stojí incident so systemd-tmpfiles a nesprávne vymazanie adresárov v oddiele /home Bola to nešťastná situácia, ktorá vyvolala diskusiu a významné opravy v implementácii systemd.
Začalo sa objavovať veľa varovných správ, vrátane trás
/home(nepodarilo sa obnoviť časy úprav...?). Čo robí nástroj na dočasné čistenie v mojom domovskom adresári? To nie je dobré. Srdce mi začalo biť rýchlejšie a stlačil som Ctrl-C tak rýchlo, ako som len vedel.Ukázalo sa, že veľká časť môjho osobného adresára bola vymazaná. Našťastie to vyzerá, že to začalo z konfiguračných súborov a nie zo skutočných údajov, aj keď si stále nie som istý, či som niečo dôležité neprehliadol. Vypol som stroj, aby som neskôr obnovil údaje
extundelete(btw, nefungovalo to, z nejakého dôvodu to okamžite spadne; mám zálohy, ale sú trochu zastarané, zapĺňam disky príliš rýchlo).
Počiatočná reakcia vývojára systemd od spoločnosti Microsoft, Lucu Boccassiho, odrážala frustráciu a zmätok používateľov postihnutých týmto neúmyselným vymazaním. Implementácia funkcie, ktorá mala podľa dokumentácie bez rozdielu vymazať všetky súbory a adresáre, ale v praxi ovplyvnila základné štruktúry systému, bola spochybnená.
Po rozsiahlych diskusiách a recenziách to bolo uznané že správanie o systemd-tmpfiles --purge bola nesprávna a boli prijaté nápravné opatrenia.
Pôvodne sa uvažovalo o úplnom odstránení tejto možnosti --purge, ale rozhodli sme sa obmedziť jeho rozsah tak, aby ovplyvnil iba súbory a adresáre priamo spojené s konkrétnou konfiguráciou v tmpfiles.d/. Táto úprava zaisťuje, že príkaz vymaže iba to, čo má odstrániť, čím sa zabráni nežiaducim vedľajším účinkom na iné oblasti súborového systému.
S čím mám problém je dokumentácia. Vysvetľuje to, čo možnosti robia, technicky vzaté (no, myslím, že áno, o architektúre tu veľa neviem), ale nevysvetľuje, prečo robia to, čo robia. Keď si niekto len prezerá dokumentáciu, zdá sa, že všetky tri možnosti robia to isté: vyčistiť dočasné súbory
--purgeZdá sa, že je „kompletnejší“, pretože uvádza, že vymaže všetky súbory (vrátane používateľských údajov).
Okrem toho, Používateľská príručka systemd-tmpfiles bola aktualizovaná poskytnúť presnejší popis možnosti --purge a zreteľne upozorniť na možné následky jeho nesprávneho použitia.
Na záver odporúčame vykonať potrebné aktualizácie, aby ste sa vyhli rovnakej situácii. Ak máte záujem dozvedieť sa viac , podrobnosti nájdete na nasledujúcom odkaze.