这是重演这个问题我两周前问过,但由于与 EOL Ubuntu 版本有关,所以问题已经解决。
我又进行了一次安装,这次是在 Ubuntu Server 20.04LTS 上,结果完全相同。我也在最新的 Debian(Buster 10.7)上尝试了相同的配置,结果相同。
因此,我们开始吧:
最新的 Samba 文档说(https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html):
当 Samba 3.0 配置为启用 PAM 支持(即 --with-pam)时,此参数将控制 Samba 是否应遵守 PAM 的帐户和会话管理指令。
这仍然可以与 Samba 4 一起使用吗?
我得到了一些奇怪的结果,似乎 PAM 的限制被强制执行一次,但后来不再执行了。
我尝试在 Samba 共享上设置文件大小限制。我不是在谈论配额,而是在谈论阻止用户存储大于 100MB 的文件。我为此使用了 /etc/security/limits.conf。
它几乎可以正常工作。好吧,它在用户第一次尝试创建文件时可以正常工作,但之后就不再可以了。
这是我所做的:
首先我在 /etc/security/limits.conf 中为用户 johndoe 定义了 100MB 的硬文件大小限制:
johndoe hard fsize 102400
然后我添加
session required pam_limits.so
到 /etc/pam.d/samba,以告诉 PAM 强制执行限制最后,我添加
obey pam restrictions = yes
到 /etc/samba/smb.conf
起初这看起来很有希望,当用户 johndoe 尝试复制一个大于 100MB 的文件时,Windows 10 客户端会抛出以下错误: 意外错误阻止您复制文件...发生意外的网络错误
到目前为止,一切顺利!这就是我想要的,阻止用户存储大于 100MB 的文件
但如果我单击“再试一次”,文件无论如何都会被复制。
如果我尝试复制更多大于 100MB 的文件,则不会再出现任何错误消息,并且复制将继续。
如果用户 johndoe 注销并重新登录,结果相同:第一次尝试复制大于 100MB 的文件时会引发错误,但后续尝试会成功。
因此,似乎我设置于 /etc/security/limits.conf 中的限制仅在第一次尝试时强制执行,之后不再强制执行。
知道为什么吗?或者知道如何实现我的目标(防止用户复制大于 100MB 的文件)?
答案1
好的,我得到了 Samba 团队的直接答复
基本上,总而言之,Samba 无法设置单个文件大小的限制
完整讨论可以在二月份的邮件列表存档中找到(https://lists.samba.org/archive/samba/2021-February.txt.gz)