Публикувано е коригиращо издание на системния мениджър systemd 256.1, в което е отстранен проблем, водещ до изтриване на съдържанието на раздела /home при изпълнение на командата «systemd-tmpfiles —purge», добавена в systemd 256 за изтриване на всички файлове и папки, създадени чрез настройките в tmpfiles.d.
В бележките за изданието на systemd 256 и в ръководството man за systemd-tmpfiles е посочено, че опцията «—purge» изтрива всички файлове и папки, създадени чрез настройките tmpfiles.d, но заглавието «tmpfiles» в името на утилитата е подвеждало и е създало впечатление, че изтриването се отнася само за временни файлове.
Настройките tmpfiles.d не са ограничени само до временни файлове и също така се използват за автоматично създаване на несъществуващи папки с данни. В частност, изтриването на съдържанието на домашните папки е обяснено с това, че чрез файла «/usr/lib/tmpfiles.d/home.conf» е бил създаден раздел «/home», и съответно командата «systemd-tmpfiles —purge» е водила до неговото изтриване.
Първоначално съобщението за грешка беше отхвърлено от Лука Боккаси (Luca Boccassi), разработчик на systemd в Microsoft, по следния начин: «Така че функцията, която буквално е документирана като „всички файлове и папки, създадени от записа tmpfiles.d/, ще бъдат изтрити“, как звучи това като „добра идея“? Вие изобщо ли проверихте какви записи в tmpfiles.d сте имали предварително? Може би не би трябвало просто да изпълнявате произволни команди, за които не знаете нищо, пренебрегвайки това, което казва документацията? Просто мисъл, а?». В отговор му бе посочено, че в документацията утилитата systemd-tmpfiles все още се описва като „инструмент за създаване, изтриване и почистване на непостоянни и временни файлове и папки“, въпреки че това отдавна не е вярно.
В крайна сметка, след дълги обсъждания през последните няколко дни, поведението на systemd-tmpfiles беше признато за грешно и променено. В началото, с цел да се изключи грешното изтриване на домашните директории, разработчиците на systemd възнамеряваха да премахнат опцията "—purge", но впоследствие приеха промяна, която ограничи действието на командата "systemd-tmpfiles —purge" — тази команда може да бъде изпълнена само при явно посочване в командния ред на конкретен файл с конфигурация от tmpfiles.d/ и ще доведе до изтриване само на свързаните с него файлове и директории. Освен това, в man-руководството на systemd-tmpfiles е добавено по-подробно описание на опцията и предупреждение за възможните последици.
Източник: opennet.ru
