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

Ada*_*ski 1 filesystems security logs tripwire

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

否则出色的loggedfs不允许我监视文件的内容,只能监视文件名。

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

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

Lam*_*ert 6

在 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
Run Code Online (Sandbox Code Playgroud)

然后配置一个手表/etc/incron.d/myscriptwatch

/path/to/dir IN_CLOSE_WRITE,IN_MOVED_TO /path/to/check_content_script.sh $@ $#
Run Code Online (Sandbox Code Playgroud)

下一步是设置您/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
Run Code Online (Sandbox Code Playgroud)

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

有关man 5 incrontab更多详细信息,请参阅。