Използвате systemd и имате v256, актуализирайте сега, защото има грешка, която елиминира домашните директории

systemd 256 премахнат /home

Преди няколко дни споделяме новините тук в блога от пускането на версията на системен 256, която беше версия, която въведе голям брой промени и нови функции, и сред тях беше помощната програма run0, която можем да кажем, че беше основната атракция на тази версия.

Причината за споменаването към systemd 256, е това е станало известно новината за пускането на коригиращо издание, systemd 256.1. Което е билостартиран за справяне с проблем критик се появи във версия 256.

Този проблем засегна неправилно изтриване на съдържанието на /home дяла при изпълнение на командата systemd-tmpfiles – изчистване. Първоначално тази опция беше предназначен за изтриване на файлове и директории създаден чрез на конфигурации в tmpfiles.d, но поведението не съответства на документацията и очакванията на потребителите.

Конкретният проблем беше, че името "tmpfiles" в помощната програма беше подвеждаща, тъй като опцията – изчистването не беше ограничено до изтриване само на временни файлове, но също така засегна директории и файлове, създадени автоматично чрез настройки в tmpfiles.d. Това включва автоматично създаване на директории с данни, като домашни директории в /home.

Например файлът /usr/lib/tmpfiles.d/home.conf беше отговорен за създаването на структурата на директорията в дома си, и неволното използване на systemd-tmpfiles –purge изтри тези директории и неговото съдържание, вместо просто да почистите само временните файлове, както се очаква.

Ето защо беше пусната коригиращата версия на systemd 256.1, за да се решат тези несъответствия и проблеми, докладвани от потребителите, както и правилно да се приведе в съответствие функцията –purge с първоначалната й цел, като се гарантира, че тя изтрива само временни файлове и не засяга структурата на директорията създаден чрез конфигурации в tmpfiles.d.

Струва си да се спомене, че инцидентът с systemd-tmpfiles и неправилно изтриване на директории в дяла /home Беше неприятна ситуация, която предизвика дебат и значителни корекции в изпълнението на systemd.

Започнаха да се появяват много предупредителни съобщения, включително маршрути в /home(не успя да възстанови времената за модификация...?). Какво прави инструментът за временно почистване в моята домашна директория? Това не е добре. Сърцето ми започна да бие по-бързо и натиснах Ctrl-C възможно най-бързо.

Оказва се, че голяма част от личната ми директория е изтрита. За щастие, изглежда, че е започнал от конфигурационните файлове, а не от действителните данни, въпреки че все още не съм сигурен дали съм пропуснал нещо важно. Изключих машината, за да възстановя данните по-късно extundelete(между другото, не се получи, забива незабавно по някаква причина; имам резервни копия, но са малко остарели, пълня дисковете твърде бързо).

Първоначалният отговор на разработчика Лука Бокаси от systemd в Microsoft отразяват разочарованието и объркването сред потребителите засегнати от това нежелано изтриване. Изпълнението на функция, която според документацията трябваше да изтрие безразборно всички файлове и директории, но която на практика засегна основни системни структури, беше поставена под въпрос.

След продължителни дискусии и рецензии той беше признат че поведението на systemd-tmpfiles --purge е неправилно и е предприето коригиращо действие.

Първоначално се смяташе, че опцията ще бъде напълно премахната --purge, но избрахме да ограничим обхвата му, така че да засяга само файлове и директории, пряко свързани с конкретна конфигурация в tmpfiles.d/. Тази модификация гарантира, че командата изтрива само това, което е предназначена да изтрие, като по този начин се избягват нежелани странични ефекти върху други области на файловата система.

Това, с което имам проблем, е документацията. Обяснява какво правят опциите от техническа гледна точка (добре, предполагам, че е така, не знам много за архитектурата тук), но не обяснява защо правят това, което правят. Когато някой просто преглежда документацията, и трите опции изглежда правят едно и също нещо: изчистване на временни файлове, въпреки че --purgeИзглежда "по-пълен", тъй като споменава, че изтрива всички файлове (включително потребителски данни).

Освен това, актуализирано ръководство за потребителя на systemd-tmpfiles за по-точно описание на опцията --purge и ясно да предупреждава за възможните последствия от неправилното му използване.

И накрая, препоръчваме да извършите съответните актуализации, за да избегнете преминаването през същата ситуация. Ако се интересувате да научите повече за това, можете да проверите подробностите в следната връзка.