我知道 LDAP 搜索基准后缀通常与目录服务器的主机名匹配。换句话说,我知道如果主机名是od.foobar.com
,我应该使用搜索基准后缀:dc=od,dc=foorbar,dc=com
我不明白为什么我要这样做,这让我很困扰。有人可以提供一些背景信息并准确解释我在做什么吗?
答案1
在 Microsoft“采用、扩展和更改”LDAP 之前,大多数实现都有对象来表示树的根。即您必须从某个地方开始。
由于我不完全清楚的原因,在 Active Directory 中,树/林中的每个域都以 dc=domain,dc=com 的名称为根,这实际上并不是两个独立的对象,而是目录名称空间的虚拟根。
我认为部分原因在于,无论如何谈论 Active Directory,它仍然是一系列链接的域,并且每个域都需要被视为独立实体。
现在,AD 树中存在自动传递信任,因此对于最终用户来说,这并不那么重要,但是,尽管命名空间看起来是连续的,但实际上并非如此。
这一点在 AD 的一些命名规则中变得更加明显。例如,sAMAccountName 在域内必须是唯一的,无论它们是否在同一个容器中。即,完整的可分辨名称必须是唯一的(您不能在同一个容器中有两个 John Smith 用户),但内部用于许多事物的短名称(sAMAccountName)需要在整个域内是唯一的。
其他目录服务也有一些类似的要求,比如 uniqueID 在整个目录中应该是唯一的,但这更多的是因为应用程序通常会做出这样的假设,因为应用程序编写者懒得处理这个复杂的问题(我不怪他们,这是一个难题)如何处理两个短名为 jsmith 的用户尝试使用一项服务,但存在于两个不同的容器中。(例如,可能是 cn=jsmith,ou=London,dc=acme,dc=com 和 cn=jsmith,ou=Texas,dc=acme,dc=com)。
使用此目录的应用程序应如何决定使用哪个用户?通常的答案是让用户决定。但这意味着捕捉这种情况,向用户呈现一个用户界面以供选择等等。
大多数应用程序编写者都忽略了这种可能性,只使用 uniqueID 或 sAMAccountName,因为它是唯一的(有点)并且更容易做到。
uniqueID 和 sAMAccountName 之间的区别在于,uniqueID 在整个目录名称空间中应该是唯一的。而 sAMAccountName 只保证在域内是唯一的。如果 AD 树有多个域,则无法保证域之间的唯一性。
答案2
其他人解释了为什么使用域名是一个好主意(但不是强制性的)。我只是补充说,这个问题是错误的:基于机器名称的基本后缀是不是完全不推荐(原因很明显:如果用 替换会怎么样gandalf.example.com
?sarouman.example.com
)。您通常只使用委托域名,因此,如果您有example.com
,则使用dc=example,dc=com
。
答案3
目录的根目录必须设置为某物。您可以将其设置为任何您喜欢的值。将其设置为域名只是一个有用的约定,可确保您的目录名称空间是唯一的。
答案4
简短版本:匹配您的域名以保证基本路径是唯一的。
这样做,如果您的公司与另一家公司合并,并且您需要合并系统,那么您就不会看起来像一个新手管理员:)
好吧,那是一个非常简短版本 =)