Я спробував це tracefile
. Для мене це дало набагато менше матчів, ніж моєму strace ... | sed ... | sort -u
. Я навіть додав -s256
до strace(1)
командного рядка, але це не дуже допомогло ...
Тоді я спробував це loggedfs
. По-перше, це не вдалося, оскільки я не мав доступу до читання / запису до каталогу, я намагався ввійти в нього. Після тимчасового виконання chmod 755 я отримав кілька хітів ...
Але, як мені здається, найкраще працює таке:
inotifywait -m -r -e OPEN /path/to/traced/directory
А потім післяобробляйте результат після запуску процесу, що цікавить.
Це не вловлює аутсайси файлів для доступу до
відстежуваного каталогу, а також не знає, чи звертався якийсь інший процес до того ж дерева каталогів, але у багатьох випадках це досить хороший інструмент, щоб виконати роботу.
EDIT: inotifywait не отримує доступ до символьного посилання (лише цілі після усунення посилань). Мене це вразило, коли я архівував бібліотеки, до яких зверталася програма для подальшого використання. Використовували кілька додаткових хакерських програм Perl для вибору символьних посилань уздовж повідомлених бібліотек, щоб виконати роботу в цьому конкретному випадку.
EDIT2: щонайменше, коли ініціація файлів і посилань на них із командного рядка inotifywait (наприклад, inotifywait -m file symlink
або inotifywait symlink file
) вихід буде показувати доступ до якого перший в командному рядку (незалежно file
від того symlink
, до якого з них звертається). inotifywait не підтримує IN_DONT_FOLLOW - який, коли я спробував програматично, просто дозволяє отримати доступ до доступу file
(який може бути, а може, і не бути таким, якого ви очікуєте ...) незалежно від порядку в командному рядку
strace
, я припускаю, що ви спеціально зацікавлені в Linux. Правильно?