LINUX.ORG.RU
ФорумAdmin

Логирование изменения файла

 , , , ,


1

1

Всем доброго времени суток!

Работаю над одной задачкой.. Требуется логирование доступа к некоторым конфиг-файлам ОС (RedOS).

Например /etc/rsyslog.d/config.

Нужно логировать кто изменил и что изменил в конфиге. Используя минимально возможный функционал ОС (RedOS).

Пока что смог используя incron задать выполнение своего bash-скрипта по событию открытия файла - копирует конфиг во временный бэкап, по событию изменения файла - через diff выдаёт разницу в конфигах с бэкапным и результат через logger в syslog. В целом всё как надо, но это без логина пользователя, который открывал файл.

Через auditd как будто можно получить в логи обращение к файлу - логин пользователя. И с натягом, приложив рядом 2 лога, можно будет сказать, что логируется доступ к конфигу как меня просят.

Но может подскажете, дадите совет, как задачку можно было бы лучше\правильнее сделать. Сторонее ПО недопустимо. Только утилиты из штатного репозитория RedOS.



Последнее исправление: polosatik (всего исправлений: 2)

Ответ на вопрос «что изменил» может дать только сравнение с бекапом. Запускать бекап по икрону/аудиту проблемы нет, смотреть, кто именно с каким auid правил этот файл — тоже.

Aceler ★★★★★
()
#!/bin/sh

FILE="file_to_watch.txt"
FILE_BK="/tmp/file.bk"
cp $FILE $FILE_BK
while true; do
inotifywait -q -m -e close_write $FILE |
    while read -r filename event; do
        diff $FILE_BK $FILE
    done
done

В другой консоли выполняешь:

$ echo test > file_to_watch.txt
$ echo ssssss > file_to_watch.txt

…и скрипт печатает:

1c1
< test2
---
> test
1c1
< test
---
> ssssss

Можешь добавить время и дату по вкусу. Выводишь выхлоп скрипта в лог и разуешься жизни.

iron ★★★★★
()