我正在贡献并运行一个开源 Web 应用程序,该应用程序在很大程度上在我之前就已经存在。该应用程序将 Web 应用程序用户的 LDAP 条目添加到本地 LDAP 实例,以使这些用户可以通过 Samba 访问文件系统。
在我知道的所有工作示例中,sambaSID
存储在 LDAP 中的值都配置为由模式计算
$LOCALSID "-" ($UIDNUMBER * 2 + 1000)
示例:对于具有uid 1002
的用户,sambaSID 将类似于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
gidNumber:1000sambaPrimaryGroupSID:S-1-5-21-2896602268-470177729-4123194723-3001
如您所见,常规 sambaSID 后面附加了一个 4 位数字(取自上面的 WORKGROUP 示例)。这是通过以下方式生成的:
sambaSID: uidNumber * 2 + 1000
sambaPrimaryGroupSID: gidNumber * 2 + 1001这些条目必须始终匹配并符合上述架构 - 否则用户将无法通过 SMB 进行连接。
因此,这些数字似乎不是随意选择的。但是,在我们的示例中,与引用的 PDF 不同,我发现sambaPrimaryGroupSID
没有经过任何算法,它对 group 100
( users
) 的值只是附加了,like S-1-5-21-1234567890-5678912345-987654321
-
100
,这与上面引用的 PDF 中的解释不同。但是,Samba 访问也可以正常工作,所以我想知道我找到的来源有多可靠。
那些神奇的数字“2”和“1000”是从哪里来的?它们对任何事情都是必要的或有用的吗?
我正在寻找同样的东西,并找到了这个链接。
那里解释说,乘以 2 是为了确保用户安全 ID 和组安全 ID 不重叠。(后者总是很奇怪)。
关于 +1000,低于 1000 的数字保留给特殊的 Windows 组,就像在 Linux 中保留了很多较小的组号一样。普通 Windows 用户会得到以 1000 开头的数字。