Samba 默认文件创建掩码计算

use*_*267 5 permissions samba

嗨,我有一个问题,我似乎没有找到相关的答案。情况是我设置了 samba 服务器并尝试从 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
Run Code Online (Sandbox Code Playgroud)

从我所做的许多实验中,我了解到在从 windows samba 创建条目(文件或目录)时,会根据来自 windows 机器的默认掩码和权限执行逻辑 AND。通过使用创建掩码和强制创建模式(以及另一个用于 dirs 的设置),此行为或多或少会受到影响 - 按预期工作,完全没有问题。

我发现缺少 0011 的问题仍然存在,使用创建掩码 755 - x 位仍然从文件中删除。唯一的选择是使用强制创建模式 755。在那之后位保持不变或广告它们。

我测试了其他创建掩码选项,似乎每次都从文件中删除 0011。755, 777, 333 ... 所以看起来它可能是某种保护机制从组中删除 x 和其他阻止脚本被执行的人?

但我的问题是关于上面的确切例子。为什么有 d755 但结果是 -744。失去 0011 的魔力究竟发生在哪里?

非常感谢您的任何提示。

kri*_*sFR 6

丢失 0011 的神奇之处在于它是默认的 Samba 行为。

从文档中摘录:

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

默认值:创建掩码 = 0744

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

搜索 create mask (S)

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

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

-rwxrw-r--. 1 vanek amikon    0 Dec 21 10:14 file.txt
Run Code Online (Sandbox Code Playgroud)

此外,正如您所说,要更改此行为,您必须明确定义自己的掩码。现在,“创建”和“强制创建”之间的主要区别在于:

  • 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
Run Code Online (Sandbox Code Playgroud)

结果 : -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
Run Code Online (Sandbox Code Playgroud)

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


等等...

希望它可以帮助您了解 Samba 行为。