У меня есть приложение, которое создает временные файлы и быстро удаляет их. Но я хотел бы сохранить эти файлы, есть ли способ сделать это в Linux?
2 ответа
Я нашел достаточно хорошее решение с использованием Sticky Bit и Inotify вместе взятых. Идея проста: если мы установим залипание в каталоге, пользователи не смогут удалять файлы, принадлежащие другим пользователям, но все равно смогут писать в них, если права доступа к файлу установлены правильно.
Итак, мы делаем следующее:
$ chmod a+t dir
$ while inotifywait -e close_write dir; do chmod a+rwx dir/*; sudo chown root:root dir/*; done
Первая строка устанавливает липкий бит. Второй постоянно ожидает изменений в нашем каталоге, и, как только приложение завершает запись в файл, оно позволяет всем пользователям получить к нему доступ, а затем меняет владельца этого файла. Владелец не должен быть пользователем root, он также будет работать с любым другим пользователем.
Таким образом, в итоге мы получаем доступные для записи файлы, которые приложение не может удалить. Именно то, что мне было нужно.
Да, вы можете использовать возможности каждого из процессов в Security-Enhanced Linux, который был частью Ubuntu в течение последних двух лет. Будьте готовы к крутой кривой обучения.