Samba 回收模块问题

Samba 回收模块问题

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: 我采取的步骤:

  1. 为回收站创建专用文件夹并赋予其完全权限:

    mkdir /samba/recycle

    chmod 777 /samba/recycle

  2. 将 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

高血压

相关内容