Вы можете отследить системные вызовы strace
, но это действительно неизбежное снижение скорости. Вам нужно запускать strace
с правами root, если команда запускается с повышенными привилегиями:
sudo strace -f -o foo.trace su user -c 'mycommand'
Другой метод , который, вероятно, будет быстрее , предварительно загрузить библиотеку , которая обтекает функции доступа к файловой системе: LD_PRELOAD=/path/to/libmywrapper.so mycommand
. LD_PRELOAD
Переменная окружения не будет передана программ , вызываемых с повышенными привилегиями. Вам нужно написать код этой библиотеки-обёртки ( вот пример из «Построения библиотечных вставок для развлечения и выгоды» ); Я не знаю, есть ли в сети доступный для повторного использования код.
Если вы отслеживаете файлы в определенной иерархии каталогов, вы можете просмотреть файловую систему с помощью LoggedFS так , чтобы все обращения через это представление регистрировались.
loggedfs -c my-loggedfs.xml /logged-view
mycommand /logged-view/somedir
Чтобы настроить LoggedFS, начните с примера конфигурации, поставляемой с программой, и прочитайте синтаксис файла конфигурации LoggedFS .
Другой возможностью является подсистема аудита Linux . Убедитесь, что auditd
демон запущен, затем настройте то, с чем вы хотите войти auditctl
. Каждая регистрируемая операция записывается в /var/log/audit/audit.log
(в типичных дистрибутивах). Чтобы начать просмотр определенного файла:
auditctl -a exit,always -w /path/to/file
Если вы помещаете наблюдение в каталог, рекурсивно также просматриваются файлы в нем и его подкаталогах. Старайтесь не смотреть каталог, содержащий журналы аудита. Вы можете ограничить ведение журнала определенными процессами, см. auditctl
Справочную страницу для доступных фильтров. Вы должны быть пользователем root, чтобы использовать систему аудита.
strace
, я предполагаю, что вы особенно заинтересованы в Linux. Верный?