Назад | Перейти на главную страницу

Общесистемный доступ к файлам и мониторинг системных вызовов в Linux?

В среде Windows вы можете запустить Procmon (Process Monitor) из Sysinternals, который покажет вам каждый доступ к файлу, запрос реестра и т. Д. В масштабе всей системы (скриншот прилагается). Затем вы можете вернуться назад, чтобы найти, какие процессы касаются / обращаются к определенному файлу (или запросу реестра).

В мире Linux мне иногда нужно выяснить, какие процессы обращаются к определенному файлу в системе, но я понятия не имею, на какой процесс начать поиск. Мне известно о strace, и я знаю, что могу прикрепить его к нескольким процессам, но есть ли способ вывести каждый доступ к файлам глобально в Linux?

Пример ProcMon в Windows

Конечно, это Linux, и есть несколько способов сделать это.

Метод отслеживания. Скрипты которые используют ftrace или eBPF чтобы отследить все, что есть в ядре. В этом примере open () см. opennoop. Вы можете фильтровать по PID или имени файла. Очень мощный и может использоваться по отдельности, но не всем пока комфортно писать сценарии проверки ядра.

Метод аудита. Настройте правила auditd для регистрации доступа к определенным файлам или системных вызовов. Следуйте примерам отслеживания пути "Подсистема аудита Linux использовалась в корпоративных средах для соответствия требованиям. Документировано, хорошо ведет журналы, но не может контролировать все на лету.

Sysdig сделает то, что вы ищете. Однако для этого требуется root-доступ и модуль sysdig-probe.