Искать изменившиеся или новые файлы find ~

Подскажите как лучше искать файлы, даже лучше не искать, а мониторить, файлы которые изменились или добавились за последний час. или прямо сейчас.

я щас ищу так, за сутки.

find ~ -iname '*.php' -mtime -1

но наверное это не совсем верно? может есть какое то событие, которое можно отловить? на баше наверное врядли, ну хотябы на питоне

цель чтобы я всегда оперативно видел взломанные залитые шеллы


Ответы (1 шт):

Автор решения: KoVadim

Бекапы или просто теневые копии (любая система контроля версий также хорошо поможет ещё и с откатом) - хорошее решение. Но если нужно просто высекать сам факт изменения, то можно сделать так.

Для начала проверим, что все работает. Запустите такую команду

inotifywait -mr /tmp # очевидно, нужно указать свой каталог

и попробуйте что-либо поделать в каталоге (даже ls будет достаточно). параметр m говорит "нужно мониторить", r - смотреть рекурсивно. Если все работает хорошо, можно перейти к скрипту. В принципе можно перехватывать вывод от этой команды и перенаправлять его скрипту для обработки, но можно и на питоне, будет неверно удобнее.

Bash (https://stackoverflow.com/questions/7542430/inotify-and-bash) - будем искать свежесозданные файлы и печатать в консоль имя и дату. В принципе уже достаточно, что бы сделать свою систему

DIR=/tmp
while RES=$(inotifywait -e create $DIR --format %f .)
  do echo RES is $RES at `date`; done

В принципе, inotifywait умеет печатать в syslog, а на него можно направить любую систему анализа логов (splunk, elk), а там уже делать систему нотификации нужных людей.

Python - есть модуль с примером https://pypi.org/project/inotify/


Если же хостер не позволяет, используйте git или hg (или любую другую систему контроля версий). А по таймеру (крону) вызывайте git status и смотрите на вывод. Либо смотрите сюда.

Но никто не мешает делать git checkout . && git clean -fd и нам побоку на юних хацкеров:)

→ Ссылка