当在本地文件系统上创建具有特定内容(例如由校验和给出)的文件时,如何捕获事件?

当在本地文件系统上创建具有特定内容(例如由校验和给出)的文件时,如何捕获事件?

我想实现某种绊线安全机制,当用户在其工作站的硬盘驱动器上写入具有特定内容的文件时(将由我管理),该机制实时跟踪事件。

否则辉煌记录文件系统不允许我监视文件的内容,只能监视文件名。

我还有什么其他选择?我想我需要类似于实时防病毒软件使用的东西。

PS 我可以使用 btrfs 并依赖它的叶块校验和。但我更喜欢更通用的解决方案。

答案1

在 Linux 上,您可以将该inotify机制与incron.incron通过安装包并编辑配置进行设置:

/etc/incron.conf
system_table_dir=/etc/incron.d
user_table_dir=/var/spool/incron
allowed_users=/etc/incron.allow
denied_users=/etc/incron.deny
lockfile_dir=/var/run
logfile_name=incrond
editor=vi

然后在以下位置配置手表/etc/incron.d/myscriptwatch

/path/to/dir IN_CLOSE_WRITE,IN_MOVED_TO /path/to/check_content_script.sh $@ $#

下一步是设置您/path/to/check_content_script.sh以检查文件的处理情况:

CURRSUM=$(md5sum $@)
PREVSUM=$(cat /path/to/old_saved_sum)

if [ "$CURRSUM" = "$PREVSUM" ]
then
   echo "file $@ is not altered" >> /tmp/watch_log
else
   echo "file $@ is altered" >> /tmp/watch_log
fi

您还可以监视其他事件以查看文件是否已更改,例如IN_CLOSE_WRITE,IN_ATTRIB,IN_MODIFY

请参阅man 5 incrontab了解更多详情。

相关内容