Публикувана коригирана версия на системния мениджър 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
