В моем домашнем каталоге неожиданно появились три файла: client_state.xml, lockfile и time_stats_log. Последние два пусты. Мне интересно, как они туда попали. Это не первый раз, когда это случилось, но последний раз это было несколько недель назад; Я удалил файлы и ничего не сломалось и не пожаловалось. Я не мог думать о том, что я делал в то время, о котором сообщал stat $filename
. Могу ли я узнать, откуда они пришли?
Альтернативно, есть ли способ контролировать домашний каталог (но не подкаталоги) для создания файлов?
files
monitoring
волк
источник
источник
Ответы:
Я не верю, что есть способ определить, какая программа создала файл.
Ваш альтернативный вопрос: вы можете наблюдать за воссозданием файла, используя
inotify
.inotifywait
интерфейс командной строки дляinotify
подсистемы; вы можете сказать ему искатьcreate
события в вашем домашнем каталоге:Вы, вероятно, хотите запустить его с
-m
(monitor), который говорит не выходить после того, как увидит первое событиеисточник
inotify
? Он не установлен (ядро 2.6.34) и его нет/dev/inotify
.CONFIG_INOTIFY_USER
(Filesystems
->Inotify support for userspace
).inotifywait
вероятно, в пакете с именем что-то вродеinotify-tools
inotify-tools
пакет, так что теперь у меня естьinotifywait
(иinotifywatch
). Я проверил это, и это похоже на работу.Вы можете наблюдать за всем, что происходит в файловой системе, обращаясь к ней через LoggedFS . Это сложенная файловая система, которая регистрирует каждый доступ в дереве каталогов.
Регистрация всего домашнего каталога может замедлить работу вашей системы. Вы по крайней мере захотите написать файл конфигурации со строгими фильтрами.
Если у вас есть root-доступ, в Linux вы можете использовать подсистему аудита для регистрации большого количества данных, включая обращения к файловой системе. Убедитесь, что
auditd
демон запущен, затем настройте то, с чем вы хотите войтиauditctl
. Каждая регистрируемая операция записывается в/var/log/audit/audit.log
(в типичных дистрибутивах). Чтобы начать просмотр определенного файла:или в длинной форме
Если вы поместите наблюдение в каталог (с помощью
-w
или-F dir=
), рекурсивно будут также просматриваться файлы в нем и его подкаталогах.источник
Возможно, вы захотите взглянуть на
auditd
этот пакет, который позволяет проводить аудит безопасности и получать много информации о том, кто что изменил в файловой системе.источник
Я знаю, что это старый вопрос, но я предложу другой подход на тот случай, если кто-то сочтет его полезным. Я первоначально отправил это как ответ на вопрос, который был дублирован на этот.
Один из вариантов - использовать
sysdig
: приложение для мониторинга системы с открытым исходным кодом. Используя его, вы можете отслеживать активность файла по имени. Предположим, вы хотите увидеть, какой процесс создает файл с именем/tmp/example.txt
:Из этого вывода видно, что
touch
файл с именем pid 5470 открыл файл.Если вам нужна дополнительная информация, вы можете запустить в «режиме захвата», где собрана трассировка системного вызова:
Затем дождитесь создания файла, затем остановитесь
sysdig
и запустите:Это позволит вам исследовать все, что произошло. Вы можете нажать
<F2>
и выбратьFiles
, нажмите,<F4>
чтобы найти имя файла, затем нажмите,<F6>
чтобы «копать» (который покажет вам вывод, похожий на команду выше). При этом вы можете использовать тот же подход, чтобы найти информацию о процессе, который фактически создал файл.Есть версия GUI для
csysdig
звонковsysdig-inspect
, если это больше ваша чашка чая.источник
У вас нет,
inotify
поэтому вы можете написать скрипт, который проверяет файл в цикле:источник