我在使用 Samba 时遇到了一个小问题,我无法解决,但我真的希望没有解决方案。当将具有限制权限的文件从共享上的一个目录复制到另一个目录时,权限也会被复制,而不是设置为父目录的权限。
具体来说,我们有一个具有以下权限的 Samba 共享:
[Global]
comment = Global Space
path = /home/global
valid users = @users
read only = No
create mask = 0760
directory mask = 0770
force directory mode = 0770
inherit permissions = Yes
我刚刚读到,inherit permissions = Yes
禁用了它create mask
,directory mask
但让我们暂时忽略它。
当用户在共享上创建文件时,权限会正确设置,以便每个人都可以读取和修改每个人的文件,这要归功于inherit permissions
。它还适用于将文件从 Windows 复制到 Samba。
但是,为了让事情复杂化,假设我们在某些子文件夹中有一些受限制的文件夹“priv”,例如
+ customers
| + customer1
| | + priv
| | | + restricted stuff ...
| | + source
| | | + files etc.
| + customer2
| + source
| + files again
+ other
+ priv
+ doc
+ who cares
普通用户无法读取这些文件,但priv
组内的用户可读取。由于权限是继承的,并且在“priv”目录中正确设置,因此在那里创建的文件归priv
组所有,而不是所有users
。由于权限分别为 760 和 770(分别针对文件和目录),普通用户无法读取它们。我们还有一个 cron 作业,它每晚递归地确保这些权限,这对我们来说是可以接受的。
如果我们现在将文件从“priv”目录复制到另一个开放目录,普通用户将无法修改它,因为 Linux 权限也被复制了。将文件复制到 Windows 客户端并返回共享可按预期工作。
有没有办法在 Samba 上启用此行为?我的系统是 Ubuntu 14.04.2,Samba 版本为 4.1.6-Ubuntu。