我在 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 限制(默认为否)。