LINUX.ORG.RU

отследить и записать обращение к файлу от конкретной программы, от выбранной программы


0

0

задолбало меня искать какая прога каким конфигом пользуется, откуда что тянет в настройки, какой процесс что меняет в конфигах и т.п. потому затеял автоматизировать этот процесс.
мысль такая - состряпать демона, который будет следить за обращением к конкретным файлам и вести лог: какая программа (процесс) обратились, что изменили. следить за конкретными (выбранными/указанными) программами (процессами) и вести лог к каким файлам они обратились, что поменяли.
демона на перле состряпать я могу. вывести запись логов тоже. не знаю, как реализовать самое главное - слежение за конкретными файлами и за тем, кто к ним обратился. так же не знаю как реализовать слежение за конкретными программами (процессами) и за тем, к каким файлам они обращаются.
возможно, идея с собственным демоном неправильная. ведь есть процесс, ведущий запись системных логов, он пишет кто обратился к конкретным системным файлам. тогда может ктойнить знает, что поковырять в конфигах, чтобы заставить выполнять нужные мне задачи.
вообщем помогите, кто чем может ))))

anonymous

можно и уже работает. дорого.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от mv

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

anonymous
()
Ответ на: комментарий от anonymous

Можешь мониторить факты изменения каталогов/файлов с помощью fam или gamin. Причём, gamin не поддерживает рекурсивный мониторинг каталогов. Если проблемы кроссплатформенности между юниксами не волнует, то можно использовать inotify.

Отслеживать из userspace, какой именно процесс сделал изменения, имхо, нельзя - это было бы серьёзным security leak'ом.

mv ★★★★★
()

Давно это уже есть. Называется auditd. Пишешь ей в конфиг, какие файлы мониторить, какие системные вызовы - и она будет всё в лог писать.

Zmacs
()

export LD_PRELOAD="что-нибудь ловящее вызовы open, read, write и close.so"

anonymous
()
Ответ на: комментарий от anonymous

с прогами требующими патчить ядро чойто возится нет желания, а вот lsof похоже удастся использовать. ман правда уж больно велик, ну ладно на выходных поманюсь )))
всем спасибо.

anonymous
()

Мониторить можно
/proc/[pid процесса]/fd
там ссылки, указывающие на открытые файла
Собственно lsof, fuser это и делают.
только толку-то, процесс может открыть и тут же закрыть файл, и об этом никто не узнает

Так что варианты только
1) Подмена системных вызовов в библиотеках (не гарантирует 100% отлов - ибо приложение может быть собрано к примеру статически)
2) strace/ltrace - аналог, по сути трассировка, но тормозить будет. Тем более все процессы не запустишь под strace (под трассировкой).
3) Подмена вызовов в ядре с последующей выдачей логов в userspace - на самом деле это тривиально, 100% результат гарантирован, никаких накладных расходов.

sycore
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.