sambaSID 计算的背景

sambaSID 计算的背景

我正在开发并运行一个开源 Web 应用程序,该应用程序很大一部分在我之前就已经存在。该应用程序将 Web 应用程序用户的 LDAP 条目添加到本地 LDAP 实例,以便这些用户能够通过 Samba 访问文件系统。

在所有工作示例中,我知道sambaSID存储在 LDAP 中的值都配置为通过模式计算

$LOCALSID "-"($UIDNUMBER * 2 + 1000)

例如:对于具有用户ID 1002sambaSID 将类似于S-1-5-21-1234567890-5678912345-987654321 - 3004[为便于阅读而添加的空格]。我很好奇为什么这是必要的。这些神奇数字 2 和 1000 从何而来,它们是必要的吗?如果需要,为什么?

四处搜寻后,我发现此 PDF与我们的应用程序无关,但准确解释了这个过程:

5.设置用户 sambaSID

为外部 LDAP 创建用户时,需要特别注意他们的 sambaSID。

用户的正确 Samba 条目如下例所示:

uid编号:1001

sambaSID:S-1-5-21-2896602268-470177729-4123194723-3002
gid编号:1000

samba主要组SID:S-1-5-21-2896602268-470177729-4123194723-3001

如您所见,常规 sambaSID 后面附加了一个 4 位数字(取自上面的 WORKGROUP 示例)。其生成方式如下:

sambaSID:uidNumber * 2 + 1000
sambaPrimaryGroupSID:gidNumber * 2 + 1001

这些条目必须始终匹配并符合上述模式 - 否则用户将无法通过 SMB 连接。

因此,这些数字似乎不是任意选择的。但是,在我们的示例中,与引用的 PDF 不同,我发现sambaPrimaryGroupSID不经过任何算术运算,其组100( users) 的值只是附加的,就像 一样S-1-5-21-1234567890-5678912345-987654321 - 100,这与上面引用的 PDF 中的解释不同。但是,Samba 访问也可以正常使用,所以我想知道我找到的来源有多可靠。

那些神奇的数字“2”和“1000”从何而来?它们是必需的还是有用的?

答案1

我也在寻找同样的东西,并找到了此链接

其中解释说,乘以 2 是为了确保用户安全 ID 和组安全 ID 不重叠。(后者始终为奇数)。

关于 +1000,低于 1000 的数字是为特殊 Windows 组保留的,就像在 Linux 中保留了相当多较小的组号一样。普通 Windows 用户获得的数字以 1000 开头。

相关内容