Samba 回收模块问题
当我删除时<share>/path/to/foo.txt
,文件夹<share>/.recycle/path/to
被创建,但是,文件夹是空的,没有foo.txt
任何存在。
环境
- 操作系统:Debian bullseye(在 docker 容器内)。
- Samba 版本:4.13.13-Debian。
- Samba 共享作为卷从主机挂载。
- Debian 包
samba-vfs-modules
安装在容器内。
Samba 配置
[global]
...
#######
# vfs #
#######
vfs objects = crossrename recycle
###################
# vfs crossrename #
###################
crossrename:sizelimit = 5368709120
###############
# vfs recycle #
###############
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:touch_mtime = no
recycle:minsize = 0
recycle:maxsize = 5368709120
recycle:exclude = *.tmp|*.temp|*.o|*.obj|~$*|*.~??
recycle:repository = .recycle
问题
为什么 Samba 回收模块没有按预期移动已删除的文件?
答案1
我们在这里遇到了完全相同的问题。结果发现这是一个权限问题。回收模块似乎以实际删除文件的用户帐户运行,因此该过程可能没有足够的权限来创建所需的文件夹结构“.recycle/...”和/或共享顶部文件夹中的移动文件。
对我来说,解决方案是将回收文件夹放入共享之外的专用文件夹,并赋予该“基本文件夹”足够的权限,以便每个用户帐户都能够在其中创建子文件夹和文件。
TL;DR: 我采取的步骤:
为回收站创建专用文件夹并赋予其完全权限:
mkdir /samba/recycle
chmod 777 /samba/recycle
将 smb.conf 更改为:
[share]
...
recycle:repository = /samba/recycle/%U
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
请注意,我在字符串中添加了“%U”。这会将用户名添加到路径中,因此位于的文件/samba/share/foo/text.txt
将在/samba/recycle/<username>/share/foo/text.txt
高血压