工作中, 有时候我们需要知道某个文件是否被修改了, 被哪个程序修改了. Linux 下可以很方便地监控某个文件被修改的记录. 根据目的不同, Linux 下有不同的监视文件或文件夹的方案.
A. Auditd
Auditd 可以很方便监控记录哪些程序和用户对指定文件 (即使不存在) 做的操作.
安装 auditd一般发行版软件仓库里都会有 auditd 安装包. 如果默认没有安装, 可以很方便地利用包管理器来安装## Fedora
$ sudo dnf install -y audit
## CentOS
$ sudo yum install -y audit
## Debian / Ubuntu
$ sudo apt install -y audit启动 audit 服务$ sudo systemctl enable --now auditd检查 audit 服务状态$ sudo systemctl status auditd
● auditd.service - Security Auditing Service
Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-09-07 08:47:53 CST; 10min ago
Docs: man:auditd(8)
https://github.com/linux-audit/audit-documentation
Process: 28126 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS)
Process: 28121 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS)
Main PID: 28122 (auditd)
Tasks: 5 (limit: 4915)
Memory: 3.3M
CGroup: /system.slice/auditd.service
├─28122 /sbin/auditd
├─28124 /sbin/audispd
└─28127 /usr/sbin/sedispatch
这就表示服务正常.
配置 audit 监视规则为了监视文件的访问操作, 需要在/etc/audit/rules.d/audit.rules 添加如下规则, 其中 perm 是要监控的操作, key 是在查寻时指定的关键字, path 是要监控的文件路径.$ vi /etc/audit/rules.d/audit.rules
-a always,exit -F path=/path/to/file -F perm=warx -F key=keyword-for-filter-log重启 audit 服务### Note: use service instead of systemctl
$ sudo service auditd restart检查 audit 规则.$ s