我正在开发并运行一个开源 Web 应用程序,该应用程序很大一部分在我之前就已经存在。该应用程序将 Web 应用程序用户的 LDAP 条目添加到本地 LDAP 实例,以便这些用户能够通过 Samba 访问文件系统。
在所有工作示例中,我知道sambaSID
存储在 LDAP 中的值都配置为通过模式计算
$LOCALSID "-"($UIDNUMBER * 2 + 1000)
例如:对于具有用户ID 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
gid编号:1000samba主要组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 开头。