Strannik223 wrote:А может так: при открытии файла создаем hardlink с каки нибудь "мусорным названием" а при закрытии проверяем, если орининал не был удален шаловливыми ручками то удаляем hardlink а если наш файл убили, то переименовываем hardlinked file to original name. Только надо бы предусмотреть зачистку hardlink-ов которые остаются в результате крешей.
Правда остается возможной диверсия: кто то удалил файл и создал новый с таким же именем.
Вот, это наверное решение на поставленный вопрос. Вт только ИМХО, вопрос поставлен кривовато и так решать хотя и возможно, но на мой взгляд немного некошерно.
Хотя информации немного недостаточно, но я могу себе представить три ситуации и три способа решения данной задачи:
1. Пользовательская программа пишет в файл пользователя в директории пользователя. Удалить никто не может, кроме пользователя или root-а. Защищаться надо от самого пользователя. Защита - резервные копии, ну или, как предложено, хардлинки. Но, хардлинки не будут работать на некоторых ФС и на разных партишенах.
2. Демон пишет данные в свой файл.
An application (or a group of inter-related applications) must use a subdirectory of /var/lib for its data.
Тогда файл находится в директории /var/<имя демона> или /usr/local/var/<имя демона>
Про пермишены у меня в debian-policy написано, что директории должны быть 755 (c правом записи только для пользователя) или c 2755 с правом записи для группы.
Нужна защита от пользователя. При указанном расположении файлов и директориев проблема случайного удаления пользователем не возникает - у пользователя (в том числе и у других демонов не хватает прав).
3. Демон или программа пользователя пишет данные в лог, через демона записи в лог. Нужна защита от злоумышленника (в том чисме и с правами root-а). В общем случае проблема решается только записью логов на специально выделенном компьютере. Демон записи в лог это умеет.
Ссылки по теме - Filesystem Hierarchy Standard
http://www.pathname.com/fhs/pub/fhs-2.3.html (Для Линукса)