Samba 权限被忽略

Samba 权限被忽略

我在 smb.conf 中定义了以下共享

[development_server]
    comment = Development directories
    path = /sites
    writeable = yes
    valid users = @dev
    guest ok = no
    directory mask = 0775
    create mask = 0775

问题是,每当我在 Windows 中创建文件时,该文件的权限都会设置为 764,而不是 755。但是目录的权限设置为 775。我很困惑。我尝试设置以下内容:

[global]
    unix extensions = yes

但这也无济于事。

答案1

问题原来出在我的配置中的安全模式设置(或缺少安全模式)。以下 smb.conf 配置现在对我有用,并且我的安全组“dev”中的所有用户现在在共享中创建的所有文件的安全模式都是 775:

[development_server]
    comment = Development directories
    path = /sites
    writeable = yes
    valid users = @dev
    guest ok = no

    create mask = 0775
    force create mode = 0775
    security mask = 0775
    force security mode = 0775

    directory mask = 0775
    force directory mode = 0775
    directory security mask = 0775
    force directory security mode = 0775

我在挖掘过程中发现了这个解决方案问库本图

答案2

检查obey PAM restrictions参数。如果启用,Samba 将为给定用户创建具有 umask 限制的文件。

答案3

create mask只能用于防止设置权限位,因为掩码是按位AND与客户端尝试设置的位相加的。如果掩码设置为 7,但客户端尝试设置较小的值(例如 6),则客户端“获胜”,因为0 AND 1执行位为0

force create mode反过来,它会按位将OR模式设置为客户端尝试设置的值,因此如果您7在此处设置,则每一位最终都会得到x OR 1,即1

为了强制设置该值0775而不管客户端尝试设置什么,您必须将两者结合起来:

create mask = 0770   (0000 would also work)
force create mode = 0775

查看文档

答案4

一句话警告测试此问题时:

在遭受同样的问题后,我发现,至少就我而言,它是有条件的;

  • 当我使用上下文菜单新文件(“新文本文件.txt”)在 samba 共享中创建文件时才不是设置该文件的组写入位(0750)

  • 当我使用上下文菜单 new-file 创建新文件并在按下 Enter 键之前更改其名称时设置组写入位在那个文件上!(0770)

我的解决方案是 @niziak 警告的那个。不要使用遵守 PAM 限制(默认为否)。

相关内容