Мониторинг доступа к файлам в Linux
Для приложения, которое я пишу, я хочу знать, какие процессы обращаются к определенному файлу, и записать эту информацию в файл журнала. В конце один из процессов будет удалять этот файл, я хотел бы знать имя процесса для этого тоже.
Я могу использовать библиотеку INotify для контроля доступа к файлу, но она не дает мне имя процесса, который обращается к файлу. Это может быть возможно при использовании пакета Auditctl в Linux, но я не могу использовать эту опцию также:-(
На самом деле это контролируемая среда, по некоторым причинам конечный клиент готов запустить программу, но не готов установить новые пакеты или внести изменения в существующие утилиты.
1 ответ
Невозможно надежно проверять напрямую доступ к файлам в Linux только из пользовательского пространства.
Вы можете опрашивать с помощью lsof, но вы рискуете не обнаружить доступ между опросами. Цель оригинального модуля dnotify (устаревшего из-за inotify...) состояла в том, чтобы избежать накладных расходов на опрос и избежать потери событий. Система аудита дает идентификацию пользователя во время открытия файла.
Если вы можете переместить файл на сервер NFS, то вы можете использовать ведение журнала NFS для записи доступа к файлу.
Клиент может быть прав, не устанавливая новые пакеты, если это рабочий сервер или сервер разработки, который собирается начать работу. Вам следует подумать о том, чтобы запросить разрешение на настройку аудита на следующем сервере разработки или тестирования.