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

要完整记录与查看共享文件访问日志,核心是启用系统级审计策略 + 配置文件 / 共享的审计规则 + 查看对应日志 ,下面按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. 点击添加选择主体 → 输入要审计的用户 / 组(如 EveryoneDomain 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 可写
相关推荐
SEO_juper21 小时前
CDN 地域节点优化:匹配 GEO 信号,提升加载速度
服务器·ai·php·seo·cdn·geo·谷歌优化
神奇小梵21 小时前
关于finalshell的使用
linux·服务器·网络
dog25021 小时前
解析几何的现代范式-算力,拟合与对偶
服务器·开发语言·网络·线性代数·php
墨北小七21 小时前
使用火山引擎 HiAgent 构建工业级设备智能运维智能体
运维·人工智能·火山引擎
Elecard 中国21 小时前
大规模媒体库如何实现自动化 QC?聊聊 VoD 文件检测架构
运维·自动化·ott·视频质检·vod·#视频编码·#音视频技术
DolphinScheduler社区1 天前
DolphinScheduler 3.1.3 跨越升级 3.4.1:基于 API 的自动化迁移方案
大数据·运维·自动化·任务调度·海豚调度
happymade1 天前
全网拓扑自动发现与服务器全维度监控的技术实践
linux·运维·服务器·网络·zabbix·路由器·prometheus
Ysn07191 天前
中文乱码:在 Docker 容器中设置中文语言环境
运维·python·docker·容器
OpsEye1 天前
数据库连接池爆了,这3个命令能救你一次
运维·数据库·后端
cui_ruicheng1 天前
Linux网络编程(五):基于UDP实现DictServer
linux·服务器·网络·udp