在 Samba 挂载的网络驱动器上跟踪在 Windows Server 上触发的文件系统事件

问题描述

我需要在 Samba 挂载的网络驱动器上跟踪由 Windows Server 2016 用户触发的文件打开/创建/删除、目录创建/删除和权限/所有权更改。真正的文件系统和 Samba 服务器在 CentOS7 系统上。所有文件系统操作都必须包含用户的 ID 和触发它的进程的 ID。显而易见的解决方案是 Windows 审计和 Windows FS 更改通知 API,但两者都不适用于 Linux 提供的 Samba 挂载。

关于 Windows 审核,我在本地组策略编辑器上启用了文件系统和文件共享审核,但是当我尝试在其高级安全设置的审核选项卡中为网络驱动器启用审核时收到以下消息:“您无权查看或编辑此对象的审核设置”。我是 Windows 系统的域管理员,所以理论上我应该可以在任何地方启用审计。我认为这与 Samba/Linux 有关系。

关于 Windows FS 更改通知 API,我使用 ReadDirectoryChangesW 函数实现了一个脚本,如 https://docs.microsoft.com/en-us/windows/win32/fileio/obtaining-directory-change-notifications 中所述。观察本地目录时会记录 FS 事件,但在 Samba 挂载中没有记录任何内容

有没有人设法让这两个解决方案与映射到 Linux EXT4/XFS 文件系统的 Samba 挂载一起工作?有没有其他选择?

我设法使用 Linux 的审计框架在 Linux 端跟踪 FS 事件,但我错过了进程 ID,因为 Samba 不会将该信息传输到 Linux 文件系统系统调用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)