我的主要目标是监控Tomcat目录,是否有用户修改tomcat目录中的文件;在日志中打印该用户名;

我的主要目标是监控Tomcat目录,是否有用户修改tomcat目录中的文件;在日志中打印该用户名;
#!/bin/bash

watchDir="$1"
watchDir2="$2"
date1=$(date '+%Y-%m-%d-%H:%M:%S')
inotifywait -m -r --exclude \.log "$watchDir" "$watchDir2" -e attrib,delete,delete_self,close,close_write,close_nowrite,create,open,modify,move,moved_to,moved_from |
    while read -r file; do
        name=$(stat -c '%U' $file 2>/dev/null)
            date=$(stat -c %Y $file 2>/dev/null | awk '{print strftime("%d-%m-%Y %T", $1,$2)}')
        fileName=${file/* CREATE /}
        echo "[${date%.*}]" "File: '$fileName'  User: '$name'" >>  /var/log/inotify/inotify-$date1.log
    done


答案1

经过大量研究后,我发现这些限制很有用;使用 inotify 无法查找更改文件的用户。

请阅读限制http://manpages.ubuntu.com/manpages/bionic/man7/inotify.7.html

限制和注意事项

inotify API 不提供有关触发 inotify 事件的用户或进程的信息。特别是,对于通过 inotify 监视事件的进程来说,没有简单的方法来区分它自己触发的事件和其他进程触发的事件。



相关内容