Вы можете отследить системные вызовы 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. Верный?