一、SMB 共享的核心概念
- 定义:SMB 是一种应用层协议,允许不同设备通过网络访问共享的文件、目录、打印机等资源,相当于在网络中搭建 “资源共享桥梁”。
- 发展历程:由 IBM 于 1983 年开发,后被微软改进并命名为 CIFS(Common Internet File System),如今 SMB/CIFS 已成为跨平台共享的标准协议之一。
二、SMB 共享的工作原理
- 通信流程
- 客户端向服务器发起连接请求,验证用户身份(如用户名、密码)。
- 身份通过后,客户端可访问服务器上的共享目录,进行文件的读取、写入、删除等操作。
- 关键组件
- SMB 服务器:提供共享资源的设备(如 Windows 电脑、NAS 存储)。
- SMB 客户端:访问共享资源的设备(如另一台电脑、手机)。
- 网络协议:基于 TCP/IP 协议传输数据,默认使用端口 445(新协议)或 139(旧协议)。
-
问题原因:网络共享删除不触发 Linux 回收站脚本
-
在 Linux 服务器上通过脚本(如trash命令)实现的回收站功能,仅对本地终端执行的删除命令有效(如rm或trash命令),而 Windows 通过网络共享删除文件时,实际是通过SMB 协议直接操作服务器文件系统,不会调用 Linux 的 bash 脚本或 trash 命令,因此无法进入预设的 trash 目录。
二、解决方案:针对 SMB 共享启用回收站功能
1. 在 Linux 服务器上配置 Samba 共享回收站
Samba(Linux 的 SMB 服务)支持为共享文件夹启用回收站功能,需修改配置文件:
步骤 1:安装 Samba(若未安装)
bash
sudo apt-get install samba samba-common # Ubuntu/Debian
sudo yum install samba samba-client # CentOS/RHEL步骤 2:编辑 Samba 配置文件
bash
sudo vim /etc/samba/smb.conf在共享文件夹配置块(如[电气])中添加以下参数:
conf
[电气]
path = /home/共享目录/电气
writeable = yes
# 启用回收站功能
vfs objects = recycle
recycle:repository = .recycle/%U # 回收站目录(建议在共享目录下创建)
recycle:keeptree = yes # 保留目录结构
recycle:versions = yes # 保留版本
recycle:maxsize = 1000000000 # 回收站最大容量(1GB)
recycle:directory_mode = 0700 # 回收站目录权限
recycle:file_mode = 0600 # 回收站文件权限
步骤 3:创建回收站目录并重启服务
bashmkdir -p /home/共享目录/电气/.recycle
chmod 777 /home/共享目录/电气/.recycle # 临时权限,后续可按需调整
systemctl restart smb.service # 重启Samba服务