Илюшникова Анастасия, БПМИ146.
File Integrity.
В данном проекте реализована утилита нотификации изменений, производимых над фиксированным набором файлов. Система состоит из демона, который следит за изменениями контрольных сумм файлов, и клиента, с помощью которого можно задать конкретные файлы в системе, за которыми требуется следить. При любом изменении файла посылается письмо на электронную почту.
Основные особенности утилиты(выполненные в соответствии с требованиями к проекту):
- исходный код утилиты находится в репозитории на github
- реализована функция подсчета контрольной суммы файла (функция
WorkSpace::Evaluation
в файлеfile-integrity.cpp
) - реализован функционал сохранения контрольной суммы в базе Berkley (класс
Table
с множеством методов в файлеBerkeleyDB.cpp
) - реализован функционал проверки контрольной суммы при изменении файла (функция WorkSpace::CheckFile в файле file-integrity.cpp)
- имеется файл
CMakeLists.txt
, с помощью которого происходит сборка проекта через cmake - при передаче утилиты имени файла она проверяет, существует ли файл (с помощью вызова функции access)
- есть запрос
check file...
, который проверяет, изменилась ли чек-сумма файла
Технические особенности:
- добавление в базу нового файла реализована с помощью команды
add file...
в клиенте - обновление контрольных сумм старых файлов реализовано с помощью команды
update file...
в клиенте - проверка всех файлов в базе реализована в отдельном треде в демоне
- программа реализована в виде демона, лог работы которого пишется на диск
- происходит уведомление о изменениях файла по сети через адрес электронной почты
- имеется поддержка регулярного выражения в путях через команду
add files...
- манипуляции с файлами перехватываются с помощью
inotify_add_watch
- манипуляции с изменениями атрибутов файлов также перехватываются через
inotify_add_watch
- демон является многопоточным, прием запросов и обработка файлов разделена по тредам
Зависимости можно найти в файле file-integrity/debian/control
Установка.
-
Скачать репозиторий и зайти в папку file-integrity.
-
С установкой пакета:
debuild
-
dpkg -i ../file-integrity_99999.9_i386.deb && apt-get install && dpkg -i ../file-integrity_99999.9_i386.deb
(запустится демон, который будет следить за файлами в базе данных, еcли таковые имеются) -
Настроить Exim:
-
dpkg-reconfigure exim4-config
-
Выбрать "интернет-сайт; прием и отправка почты напрямую, используя SMTP"(internet site; mail is sent and received directly using SMTP), на остальные вопросы ответить по дефолту.
-
-
fi-client (запустится клиент, через который можно добавлять файлы для контроля над ними, удалять, обновлять и т.д., команды, делающие это, можно узнать, набрав help)
Без установки пакета:
-
Скачать репозиторий и зайти в папку file-integrity.
-
cmake CMakeLists.txt && make
(если программа уже была запущена ранее выполнитьpgrep fi-server && kill -9 $(pgrep fi-server) && pgrep fi-client && kill -9 $(pgrep fi-client)
) -
./fi-server > /file-integrity.log &
-
./fi-client
integrity> help
Queries:
add file <filename>
delete file <filename>
check file <filname>
update file <filename>
add files <regexp>