Samba默认文件创build掩码计算

嗨,我有一个问题,我似乎没有find相关的答案。 情况是,我设置了桑巴服务器,并试图创build一个文件和文件夹forms的Windows机器。 一切都按预期工作,但samba从组和其他文件中删除x位有一点麻烦。 一个简单的示例代码:

drwx--x--x. 4 root root 4096 Dec 13 20:01 smb drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus [pokus] path = /smb/pokus public = no writable = yes valid users = @amikon [root@wserver pokus]# ls -l drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir -rwxr--r--. 1 vanek amikon 0 Dec 21 10:14 file.txt 

从许多实验中,我得到了理解,当创build一个条目(文件或目录)从Windows桑巴performes逻辑和从默认掩码和权利来自Windows机器。 这种行为可以通过使用create mask和force create模式(而另一个设置为dirs)或多或less影响stream畅 – 按预期工作,没有任何问题。

我发现缺less0011的问题使用创build掩码755保持不变–x位仍然从文件中删除。 唯一的select是使用强制创build模式755.之后,位保持cuz或广告他们。

我vtesting其他创build掩码选项,似乎是0011从文件被删除每次。 755,777,333 …所以它看起来可能是一些保护机制,从组中删除x和其他人防止脚本执行bo没有人但业主????

但我的问题是关于上面的确切例子。 为什么有d755,但结果是-744。 在哪里得到了0011失败的魔力?

非常感谢任何提示。

释放0011的魔力是因为它是默认的Samba行为。

从文档中提取:

创build掩码:此参数的默认值将从UNIX模式中删除组和其他写入和执行位

默认值:create mask = 0744

这里是链接: http : //www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

searchcreate mask (S)

在这个文档中,Samba团队没有解释为什么他们select实现这个默认行为,但是对于我来说,考虑一个安全机制是很容易的(正如你所提到的那样)。

您可以使用inherit permissions = yes指令使新文件inheritance其父文件夹权限,但这不会影响x位。 所以,在你的情况下,这将呈现:

 -rwxrw-r--. 1 vanek amikon 0 Dec 21 10:14 file.txt 

此外,正如你所说,要改变这种行为,你将不得不明确定义你自己的面具。 现在,“创造”与“创造力”的主要区别在于:

  • create mask需要权限(AND掩码)
  • force create mode添加它们(一个OR掩码)

同样create mask也不能处理组和其他人的x位。

所以,你可能需要处理这两个指令来达到一些目标。


我们来试一下样品:

1)如果你只想要组和其他人的x位,你将不得不合并:

 create mask = 0700 #Remove r bit from group and others force create mode = 0711 #Add x bit only to group and others 

结果: -rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt


2)如果你想要组和其他的r和x位,删除create mask指令(因为默认已经是0744),只需添加:

  ;create mask = 0700 #remove r bit from group and others (commented) force create mode = 0711 #Add x bit only to group and others 

结果: -rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt


等等…

希望它能帮助你理解Samba行为。