PHP Linux监控文件变化,文件监控与通知机制 audit inotify
什么是auditThe Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s)Kernel events (syscall events)User events (audit-enabled programs)syslog会记录系统状态(硬件警告、软件的log), 但syslog属于应用层, log归咎与软件, 并不会记录所有动作. 于是audit来记录更多信息。audit命令auditctl audit系统管理工具,用来获取状态,增加删除监控规则。ausearch 查询audit log工具aureport 输出audit系统报告auditctl示例auditctl -w /etc/passwd -p war -k password_fileauditctl -w /tmp -p e -k webserver_watch_tmp-w 监控文件路径 /etc/passwd,-p 监控文件筛选 r(读) w(写) x(执行) a(属性改变)-k 筛选字符串,用于查询监控日志auditctl -a exit,never -S mountauditctl -a entry,always -S all -F pid=1005-S 监控系统调用-F 给出更多监控条件(pid/path/egid/euid等)auditctl -D 删除所有的rule
日志查询设置了监控后,会在/var/log/audit/audit.log里出现日志。可以用此命令查看日志:ausearch -f /etc/passwd -x rm-k 利用auditctl指定的key查询-x 执行程序# ausearch -ts today -k password-file# ausearch -ts 3/12/07 -k password-file-ts 指定时间后的log (start time)-te 指定时间前的log (end time)audit库libaudit和libaudit-python不过完全找不到文档。我也觉得这个东西用得上的时候不多。除非.....
什么是inotifyinotify 是文件系统事件监控机制,是细粒度的、异步的机制。inotify is a Linux kernel subsystem that acts to extend filesystems to notice changes to the filesystem, and report those changes to applications. It replaces an earlier facility, dnotify, which had similar goals.原理和实现http://www.ibm.com/developerworks/cn/linux/l-inotifynew/http://en.wikipedia.org/wiki/Inotifyinotifywait in shell此命令会在inotify事件发生的时候阻塞,使之便于脚本应用。简单的示例
#!/bin/bash
inotifywait -mrq --event create,delete,modify,move --format '%w %e' /path | while read w e; do
if [ "$e" = "IGNORED" ]; then
continue
fi
rsync -az --delete $w username@ip:$w
done
另外一个例子:
#!/bin/sh
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %f' \
-e close_write /home/ottocho | while read date time file;
do
rsync /home/ottocho/${file} ottocho::backup
echo "Inof: ${date} ${time}, ${file} backed up"
done
inotify与rsync很多人利用inotify和rsync实现实时同步文件,而基于inotify API和rsync command的sersync解决了这个问题。http://code.google.com/p/sersync/python与inotifyinotify有两个python库,pyinotify和inofityx.区别在inotifyx的官网上作者如是说道:inotifyx是C的拓展,没有使用ctypes,因此速度更快、在inotify的API变化时会更少出现问题。inotifyx是inotify更轻的封装。pyinotify更复杂,它提供了很多inotifyx没有的特性,可这些特性在大多数情况下未必需要。inotifyx提供的API是基本不变的简易的。http://www.alittletooquiet.net/software/inotifyx/http://pyinotify.sourceforge.net/inotifyx以下是一个源自源代码的例子,非常简易,注释就不必了吧
#!/usr/bin/env python
importpyinotify
importos
importsys
classWatchLogProceesing(pyinotify.ProcessEvent):
defprocess_IN_CLOSE_WRITE(self, event):
print"processing %s"% (event.pathname)
defmonitor_dir(directory):
wmn = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wmn, WatchLogProceesing())
wmn.add_watch(directory, pyinotify.IN_CLOSE_WRITE)
notifier.loop()
monitor_dir("/home/ottocho")
pyinotifypyinotify是更出名功能更全面的库。以下是一个超级简单的示例。
#!/usr/bin/env python
importpyinotify
importos
importsys
classWatchLogProceesing(pyinotify.ProcessEvent):
defprocess_IN_CLOSE_WRITE(self, event):
print"processing %s"% (event.pathname)
defmonitor_dir(directory):
wmn = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wmn, WatchLogProceesing())
wmn.add_watch(directory, pyinotify.IN_CLOSE_WRITE)
notifier.loop()
monitor_dir("/home/ottocho")
附:
今天有一个文件总是被修改,为了找出此原因故用了此方法进行查看此文件是怎么被修改的
先设定被监控的文件
auditctl -w /usr/local/apache/htdocs/index.php war -k index_php
经过几分钟里面的内容被 修改
查看方法ausearch -ts today -k index_php
也可以把此文件输出到一个文件进行查看
ausearch -ts today -k index_php >> /tmp/logs/index_php
查看被监控的文件方法为 auditctl -l
删除所有 的文件监控 auditctl -D
PHP Linux监控文件变化,文件监控与通知机制 audit inotify相关推荐
- delphi 监控文件变化_监控Linux文件变化,防止系统被黑
运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...
- 你真的懂Linux内核中的阻塞和异步通知机制吗?(花了五天整理,墙裂推荐!)
工科生一枚,热衷于底层技术开发,有强烈的好奇心,感兴趣内容包括单片机,嵌入式Linux,Uboot等,欢迎学习交流! 爱好跑步,打篮球,睡觉. 欢迎加我QQ1500836631(备注CSDN),一起学 ...
- linux inotify-tools 监控文件变化
inotify-tools 是一个用C语言库,一个为Linux提供简单inotify接口的命令行程序.这些程序可以用于监视文件系统事件并执行相应操作.这些程序是用C语言来写的,除了需要Linux内核的 ...
- Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑
运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...
- 解压出来的文件md5会改变吗_监控Linux文件变化,防止系统被黑
运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...
- 使用auditd监控Linux的文件变化
2019独角兽企业重金招聘Python工程师标准>>> 如果没有auditd的话,使用yum安装安装即可 以linux监控/tmp/xxx.dat为例: # vi /etc/audi ...
- 监控linux空间变化,Linux监控文件变化及主动上报实现
一.说明 最近在做一些主机的自动化检查操作,每次都是定时主动去扫描.这种方式一是实时性不佳,二是扫描时会陡然给中心机很大的压力.后来想有没有一种主机上的配置如果发生变动就能主动上报的机制,如果能主动上 ...
- Python监控目录和文件变化
原文:https://www.cnblogs.com/lcamry/p/8392376.html Python监控目录和文件变化 一.os.listdir import os, time path_t ...
- python中文件变化监控-watchdog
起步 在python中文件监控主要有两个库,一个是pyinotify,一个是watchdog.pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装.因为我主要用 ...
最新文章
- 通过改进算法来优化程序性能的真实案例(Ransac)
- WCF 绑定(Binding)
- 常用模块-----configparser subprocess
- Linux shell script 的语法汇总
- idea打包meven镜像_Intelij IDEA中修改maven为国内镜像
- html资源文件记载进度条,HTML5矢量实现文件上传进度条
- 《C++ Primer Plus》读书笔记之七—内存模型和名称空间
- 工厂方法模式java实例,设计模式之工厂方法模式实例(Java)
- lol云顶之奕助手_云顶之奕小小英雄介绍 除了棋子以外它也很重要!
- SQLServer如何在批量插入后,获取批量插入的自增列的值
- 计算机网络实验——华为eNSP模拟器常用命令总结(总结的非常详细( •̀ .̫ •́ )✧快来看啊)
- extremecomponents -- 文档下载依赖使用
- 线程创建的三种方式和线程池创建的四种方式
- NetFlow网络流量分析
- 如何选择剑桥英语KET,PET课程和老师
- 自定义按键鼠标,献给电脑重度的江湖人
- 赴日软件工程师,据说很火
- 监护仪系统都是Linux吗,基于Linux和MCU的心电监护仪设计
- JavaWeb面试(史上最全的面试介绍,文字内容可以有点枯燥,可以关注一波在慢慢看)
- 小红书最新用户量数据_近半年DAU峰回路转 重新审视小红书用户价值