fswatch – это кроссплатформенная утилита для мониторинга изменений файлов, которая отправляет уведомления при изменении содержимого заданных файлов или директории.
Она включает мониторы четырех типов для различных операционных систем:
Монитор, построенный на базе File System Events API из Apple OS X.
Монитор на базе kqueue, интерфейса уведомлений, представленного во FreeBSD 4.1, который также поддерживается множеством систем *BSD, включая OS X.
Монитор на базе File Events Notification API из ядра Solaris и его производных.
Монитор на базе inotify, подсистемы ядра, передающей сведения об изменениях файловой системы приложениям.
Монитор на базе ReadDirectoryChangesW, Windows API, который записывает that records alters to a directory.
Монитор, который регулярно проверяет статус файловой системы, хранит в памяти время внесения изменений и вручную определяет изменения файловой системы (который работает в любой системе).
Возможности fswatch
Поддержка нескольких, специфических для разных ОС, API.
Рекурсивный мониторинг директорий.
Выполнение фильтрации путей с использованием регулярных выражений.
Поддержка настраиваемого формата записей.
Поддержка периодических событий idle.
Установка fswatch в Linux
К сожалению пакет fswatch не включен по умолчанию в системные репозитории ни одного из дистрибутивов Linux. Единственный способ получить последнюю версию fswatch – собрать утилиту из исходного кода. Как это сделать, описано ниже.
Сначала скачайте архив с последней версией исходного кода fswatch с помощью команды wget и установите ее:
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz $ tar -xvzf fswatch-1.9.3.tar.gz $ cd fswatch-1.9.3 $ ./configure $ make $ sudo make install
Важно: перед запуском компиляции убедитесь, что в вашей системе установлены GNU GCC (компиляторы C и C++) и инструменты разработки (build-essential в Debian/Ubuntu). Если нет, установите их с помощью следующих команд:
# yum group install 'Development Tools' [В CentOS/RHEL] # dnf group install 'Development Tools' [В Fedora 22+] $ sudo apt-get install build-essential [В Debian/Ubuntu]
В дистрибутивах Debian/Ubuntu при выполнении команды fswatch вы можете получить следующее сообщение об ошибке:
Чтобы решить эту проблему, выполните приведенную ниже команду. Она обновит кэш ссылок на динамически связываемые библиотеки.
$ sudo ldconfig
Использование fswatch в Linux
Общий синтаксис команды fswatch следующий:
$ fswatch [option] [path]
В Linux рекомендуется использовать стандартный монитор inotify, список доступных мониторов можно просмотреть с помощью опции -M или – list-monitors:
$ fswatch -M $ fswatch --list-monitors
Приведенная ниже команда позволяет вам видеть изменения в текущей директории (/home/tecmint), сообщения будут направляться на стандартный вывод каждые 4 секунды.
Опция -l или –latency позволяет задать латентность в секундах, по умолчанию она составляет 1 секунду.
$ fswatch -l 4 .
Следующая команда мониторит изменения в файле /var/log/auth.log каждые 5 секунд:
$ fswatch -l 5 /var/log/auth.log
С помощью опции -t или –timestamp можно выводить время изменения для каждого события, с помощью опции -u или –utf-time можно задать вывод времени в формате UTC. Также форматировать время вывода можно с помощью опции -f или –format-time.
$ fswatch --timestamp /var/log/auth.log
Далее, опция x или –event-flagsм позволяет выводить флаги событий сбоку от пути. Вы также можете использовать опцию –event-field-seperator для вывода событий с использованием заданного разделителя.
$ fswatch --events-flags ~ /var/log/auth.log
Для вывода численного значения события, указывающего на изменение в вашей домашней директории и в файле /var/log/auth.log, используется опция -n или –numeric, как показано ниже.
$ fswatch --numeric ~ /var/log/auth.log
Детальную информацию по опциям и использованию fswatch можно получить из man-страницы утилиты:
$ man fswatch
Также для этого можно посетить репозиторий fswatch на Github:
https://github.com/emcrisostomo/fswatch
Целостность ваших файлов вы можете контролировать также с помощью расширенной среды обнаружения вторжений AIDE.