服务器如何记录共享文件访问日志、查看用户访问共享文件的行为日志?

要完整记录与查看共享文件访问日志,核心是启用系统级审计策略 + 配置文件 / 共享的审计规则 + 查看对应日志 ,下面按Windows(SMB 共享)、**Linux(Samba 共享)** 分别给出可直接落地的配置与查看方法。

当然,对于一些企事业单位来说,部署专门的服务器共享文件管理软件可能是一个更加快速、高效的抉择。例如,大势至局域网共享文件管理系统(dashizhi.com),只需要在服务器上安装之后,就可以设置共享文件访问权限,可以只让读取共享文件而禁止复制共享文件、只让打开共享文件而禁止另存为本地磁盘、只让修改共享文件而禁止删除共享文件,并且可以详细记录局域网用户访问共享文件的权限。如下图所示:

图:大势至局域网共享文件管理系统


一、Windows 服务器(SMB 共享)

1. 启用文件访问审计(必做)

方法 1:本地组策略(单机 / 工作组)
  1. 按 Win+R → 输入 gpedit.msc 打开组策略编辑器
  2. 进入:计算机配置 → Windows 设置 → 安全设置 → 高级审核策略配置 → 对象访问 → 文件系统
  3. 双击配置文件系统审核 → 勾选成功 、失败 → 确定
  4. 命令行执行:gpupdate /force 强制刷新策略
方法 2:域环境(GPO)
  1. 在域控制器打开组策略管理(GPMC)
  2. 新建 / 编辑链接到文件服务器 OU 的 GPO
  3. 路径同上,启用文件系统审核(成功 + 失败)
  4. 等待策略同步或执行 gpupdate /force

2. 为共享文件夹配置 SACL(审计规则)

  1. 右键目标共享文件夹 → 属性 → 安全 → 高级 → 审核 → 继续
  2. 点击添加 → 选择主体 → 输入要审计的用户 / 组(如 Everyone、Domain Users)→ 确定
  3. 勾选需要审计的操作(按需选择):
    • 读取数据、列出文件夹内容、读取属性
    • 写入数据、创建文件、创建文件夹
    • 删除、更改权限、取得所有权
  4. 勾选替换所有子对象的可审核项 → 确定保存

3. 查看访问日志(事件查看器)

  1. 按 Win+R → 输入 eventvwr.msc 打开事件查看器
  2. 进入:Windows 日志 → 安全
  3. 筛选关键事件 ID(右侧 "筛选当前日志"):
    • 4663:文件 / 文件夹被访问(读 / 写 / 删 / 改)
    • 5145:网络共享对象被访问(含共享名、客户端 IP)
  4. 双击事件查看详情:账户名、客户端 IP、对象路径、访问类型

4. 实时查看当前连接与打开文件

  • 图形化:计算机管理 → 系统工具 → 共享文件夹 → 会话 / 打开的文件

  • 命令行: powershell

    复制代码
    # 查看当前SMB会话
    Get-SmbSession
    # 查看当前打开的文件
    Get-SmbOpenFile

二、Linux 服务器(Samba 共享)

1. 基础日志配置(连接 / 访问记录)

  1. 编辑 Samba 主配置:vi /etc/samba/smb.conf

  2. 在 [global] 段添加 / 修改:

    ini

    复制代码
    # 日志路径(%m=客户端IP/主机名,自动分文件)
    log file = /var/log/samba/log.%m
    # 日志级别(3=详细,5=调试)
    log level = 3
    # 最大日志大小(MB)
    max log size = 50
  3. 重启 Samba:systemctl restart smb nmb

2. 启用 full_audit 插件(记录文件操作:增删改查)

  1. 安装 Samba 审计模块(CentOS/RHEL): bash

    运行

    复制代码
    yum install samba-vfs-modules -y
  2. 在 smb.conf 的 [global] 或具体共享段添加:

    ini

    复制代码
    # 启用审计插件
    vfs objects = full_audit
    # 审计日志路径
    full_audit:log = /var/log/samba-audit.log
    # 记录成功/失败操作
    full_audit:success = connect open read write rename unlink mkdir rmdir
    full_audit:failure = connect open read write rename unlink mkdir rmdir
    # 日志前缀(含用户、IP、共享名)
    full_audit:prefix = %u|%I|%S
  3. 重启 Samba:systemctl restart smb

3. 查看日志

基础连接日志

bash

运行

复制代码
# 查看所有客户端日志
ls -l /var/log/samba/
# 实时查看指定客户端IP(如192.168.1.100)的日志
tail -f /var/log/samba/log.192.168.1.100
# 查看SMB服务总日志
tail -f /var/log/samba/log.smbd
详细文件操作审计日志

bash

运行

复制代码
# 实时查看审计日志
tail -f /var/log/samba-audit.log
# 日志格式示例:用户名|客户端IP|共享名|操作|文件路径
alice|192.168.1.100|share|open|/share/doc.txt
bob|192.168.1.101|share|unlink|/share/old.doc
查看当前连接

bash

运行

复制代码
# 查看当前Samba会话
smbstatus
# 过滤445端口连接(SMB默认端口)
netstat -tulnp | grep smbd

三、日志管理与最佳实践

  1. 日志轮转 :配置 logrotate 避免日志占满磁盘
  2. 集中日志:将日志发送到 ELK、Splunk 或 SIEM 系统,便于检索与告警
  3. 权限控制:仅管理员可访问审计日志,防止篡改
  4. 定期审查:定期检查异常访问(如大量删除、越权访问)

四、常见问题

  • Windows 无 4663/5145 事件:检查审核策略是否启用、SACL 是否配置、是否执行 gpupdate
  • Linux Samba 无审计日志:检查 vfs objects = full_audit 是否正确、日志路径权限是否为 smbuser 可写
相关推荐
IT大白鼠18 分钟前
AI SSH 运维助手 V13.0内部版七项私有新特性全解
运维·人工智能·ssh
天蓝蓝的本我35 分钟前
ollama外部无法访问.ollama.service 文件无法写入.ollama外部无法访问.
运维·网络
帷幕落秋43 分钟前
经典命令场景与软硬链接
linux·运维
派小心.1 小时前
DAU和MAU怎么计算?先确定活跃事件、用户键和统计窗口
大数据·服务器·前端·人工智能·数据分析
data analyse 4561 小时前
Session数怎么计算?明确会话切分、超时与跨页规则
java·服务器·数据库
先知后行。2 小时前
各种文件系统
linux·服务器·数据库
Sayai2 小时前
Java 进程 Unable to create new native thread 排查实战:Linux 线程数五层限制与 JVM -Xss 调优
java·linux·运维·jvm·性能优化
修船大队长2 小时前
启动阶段 KL15 未接通时触发报文超时监控
运维·服务器·网络
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》项目背景、目标及名词解释
服务器·网络·c++·语言模型