Ответ
В DevOps для отслеживания неавторизованных изменений файлов используются следующие методы:
1. Мониторинг в реальном времени с inotifywait (для оперативного реагирования)
# Установка инструмента
sudo apt-get install inotify-tools # Debian/Ubuntu
sudo yum install inotify-tools # RHEL/CentOS
# Мониторинг конкретного файла
inotifywait -m -e modify /path/to/config/file
# Комбинированный подход: при изменении сразу показываем процесс
inotifywait -m -e modify /path/to/file --format '%w%f' |
while read file; do
echo "Файл $file изменен. Процесс:"
lsof "$file" | grep -v COMMAND
echo "---"
end
2. Системный аудит с auditd (для compliance и безопасности)
# Настройка правила аудита
sudo auditctl -w /etc/important.conf -p wa -k config_changes
# Просмотр событий
sudo ausearch -k config_changes -i
# Постоянные правила (добавить в /etc/audit/rules.d/)
-w /etc/nginx/ -p wa -k nginx_config_changes
-w /etc/passwd -p wa -k sensitive_file_changes
3. Отладка работающего процесса с strace
# Отслеживать все системные вызовы write для процесса
sudo strace -p 1234 -e trace=write 2>&1 | grep -A2 -B2 "путь_к_файлу"
# Альтернатива: отслеживать только операции с конкретным файлом
sudo strace -p 1234 2>&1 | grep -E "open.*путь|write.*путь"
4. Использование fatrace для отслеживания всей файловой активности
# Мониторить все операции записи в системе
sudo fatrace | grep "W.*путь_к_файлу"
DevOps-практика:
- Конфигурационный дрифт: обнаружение изменений конфигов вне системы управления (Ansible/Puppet)
- Безопасность: выявление несанкционированной записи в системные файлы
- Отладка: определение процесса, который портит общий ресурс (файл блокировки, кэш)