从 Windows 设置 Samba 共享上的文件或目录的主要组

从 Windows 设置 Samba 共享上的文件或目录的主要组

简洁版本:

我在 Samba 共享上遇到了这种情况:

$ ls -lha
共 12K
drwxr-xr-x 3 hka 域名用户 4.0K 1 月 11 日 17:07 。
drwxrwxrwt 19 root root 4.0K 1 月 11 日 17:06 ..
drwxr-xr-x 2 hka 域用户 4.0K 1月11日 17:07 dir A
-rw-r--r-- 1 hka 域用户 0 1月11日 17:07 文件A

我如何才能将其更改为仅使用 Windows SMB/CIFS 客户端(使用第三方应用程序也可以)

$ ls -lha
共 12K
drwxr-xr-x 3 hka 域名用户 4.0K 1 月 11 日 17:07 。
drwxrwxrwt 19 root root 4.0K 1 月 11 日 17:06 ..
drwxr-xr-x 2 hka ntpoweruser 4.0K 1月11日 17:07 dir A
-rw-r--r-- 1 hka ntpoweruser 0 1月11日 17:07 文件A

理由和背景信息

我在 Samba 共享上使用 POSIX ACL。结合acl group control使用 Samba,它允许我根据组成员身份将权限管理委托给不同的用户。

问题是,当我在 Samba 共享上创建新文件时,我无法设置其主要组(授予更改其权限的组)。它被设置为我的主要组(域用户)或使用共享定义force group中的选项设置的组smb.conf

删除 Windows 中除我想要成为新主要组的组之外的所有组都不起作用。我可以通过chgrp group folder/shell 以普通用户身份更改它,但这不是最佳选择(并非所有用户都是 *nix 用户)。

尝试从 Windows 文件权限窗口将新所有者设置为组会导致 Samba 返回权限被拒绝,并出现以下日志条目:

[2012/01/05 21:13:03.349734,3] smbd/nttrans.c:1899(call_nt_transact_set_security_desc)
  call_nt_transact_set_security_desc:文件 = 项目/项目 A/新文件夹,发送 0x1
[2012/01/05 21:13:03.349774,3] smbd/posix_acls.c:1208(unpack_nt_owners)
  unpack_nt_owners:无法验证 S-1-5-21-4526631811-884521863-452487935-11025 的所有者 sid
[2012/01/05 21:13:03.349804,3] smbd/error.c:80(error_packet_set)
  smbd/nttrans.c(1909) cmd=160 (SMBnttrans) 处的错误数据包 NT_STATUS_INVALID_OWNER

SID 正确且属于 GUI 中指定的组 I。

答案1

Windows 根本没有“主组”的概念。换句话说,域用户只是将“域用户”作为其主组,可能是因为它是第一个返回给 Samba 的组。

也就是说,Windows 有一种方法可以指定“主要组”以实现 Unix 兼容性;基本上您必须设置特定的 AD 架构属性。

如果您确实想为 Windows 用户设置主要组,那么您必须执行以下操作:

  • 安装 SFU(Unix 服务)
  • 在 AD 用户和计算机面板中,您现在可以双击一个用户,然后在“UNIX 属性”选项卡上选择自定义的“主组/GID”。

可以获得更多信息这里这里

答案2

正在思考这个问题。

那么,如果域用户创建文件/目录,问题就出在这里?您说它确实从强制组设置的 smb.conf 中继承了 gid,这是理所当然的。那么,问题是,当域用户创建文件时,它不会将文件/目录设置为该用户的 gid,而是设置为域用户的 gid?

smb配置文件

可能是没有提供适当的摆脱措施? smb 组映射

相关内容