第 2 章 配置目录数据库
目录由数据库组成,目录树分布在数据库中。本章论述了如何创建 后缀、目录树的分支点以及如何创建与每个后缀关联的数据库。本章还描述了如何创建数据库链接,以引用远程服务器上的数据库链接,以及如何使用引用将客户端指向目录数据的外部源。
2.1. 创建和维护后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录树的不同部分可以存储在不同的数据库中,然后这些数据库可以分布到多个服务器上。目录树包含名为节点的分支点。这些节点可能与数据库关联。后缀是与特定数据库关联的目录树的节点。以下是一个简单的目录树:
图 2.1. 带有一个根后缀的目录树
ou=people
后缀以及其下的所有条目和节点可能存储在一个数据库中,而 ou=groups
后缀存储在另一个数据库中,而 ou=contractors 后缀则存储在另一个数据库中。
2.1.1. 创建后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
root 后缀 是子后缀的父后缀。它可以是为目录服务器设计的一个更大的树的一部分。子修复 是根后缀下的分支。root 和 sub-suffixes 用于组织目录树的内容。root 和 sub-suffixes 的数据存储在数据库中。
2.1.1.1. 创建根后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录可以包含多个根后缀。例如,用于托管多个网站的互联网服务提供商,一个用于
example.com
,另一个用于 redhat.com
。在这种情况下,需要两个 root 后缀。对应于 dc=example,dc=com
命名上下文,对应于 dc=redhat,dc=com
命名上下文,如下图所示:
图 2.2. 有两个根后缀的目录
也可以创建 root 后缀,以排除搜索操作中的目录树的部分内容。例如,如果 Example 公司希望将其欧洲办公室排除在常规 Example Corporation 目录的搜索中。要实现此操作,目录需要两个 root 后缀。一个根后缀对应于常规的 Example Corporation 目录树、
dc=example,dc=com
,一个根后缀对应于其目录树的欧洲分支 ou=europe,dc=example,dc=com
。从客户端应用程序的角度来看,目录树如下所示:
图 2.3. 搜索操作有 Root Suffix Off 限制的目录
在目录的
dc=example,dc=com
分支上执行的搜索不会返回目录 ou=europe,dc=example,dc=com
分支中的条目,因为它是单独的 root 后缀。
2.1.1.1.1. 使用命令行创建根后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 dsconf backend create 命令创建一个新的 root 后缀:
- 可选:识别已使用的后缀和后端数据库:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 括号中的名称是存储相应后缀数据的后端数据库。在下一步中创建根后缀时,您无法使用现有数据库名称。 - 在
example
后端数据库中创建 dc=example,dc=net root 后缀:dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \ --suffix="dc=example,dc=net" --be-name="example"
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \ --suffix="dc=example,dc=net" --be-name="example"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.1.1.2. 使用 Web 控制台创建根后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 Web 控制台创建新的根后缀:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录目录服务器”。
- 选择实例。
- 打开菜单。
- 点。
- 输入后缀 DN 和后端名称。例如:
- 选择 Create The Top Suffix Entry。
- 点。
2.1.1.2. 创建 Sub-suffix 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在某些情况下,管理员希望将目录树的分支存储在单独的数据库中。例如,如果管理员创建 ou=europe,dc=example,dc=com 条目作为子后缀,则此后缀存储在单独的数据库中。同时,dc=example,com root 后缀及其所有子条目 - 除 ou=europe,dc=example,dc=com 和子条目外,也存储在单独的数据库中。
图 2.4. 带有 Sub Suffix 的目录树
2.1.1.2.1. 使用命令行创建子后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 dsconf backend create 命令创建一个新的子后缀。例如,在 dc=example,dc=com root 后缀下的一个新的、名为 people 的数据库中创建 ou=People,dc=example,dc=com 子后缀:
- 可选:识别已使用的后缀和后端数据库:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 括号中的名称是存储相应后缀数据的后端数据库。在下一步中创建子后缀时,您无法使用现有数据库名称。 - 创建子后缀。例如,要创建 ou=People,dc=example,dc=com 子后缀以及
example
后端数据库,请输入:dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \ --suffix="ou=People,dc=example,dc=com" --be-name="example" \ --parent-suffix="dc=example,dc=com"
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend create \ --suffix="ou=People,dc=example,dc=com" --be-name="example" \ --parent-suffix="dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.1.2.2. 使用 Web 控制台创建 Sub-suffix 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 Web 控制台创建新子后缀:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录目录服务器”。
- 选择实例。
- 打开菜单。
- 选择您要在其中创建子后缀的后缀,点,然后选择 。
- 输入子后缀 DN 和后端名称。例如:
- 选择 Create The Top The Top-Suffix Entry。
- 点。
2.1.2. 维护后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
2.1.2.1. 查看默认命名上下文 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
命名上下文与后缀类似;它是命名目录条目的 root 结构。根据目录和数据结构,可以有多个命名上下文。例如,标准目录服务器配置具有用户后缀,如 dc=example,dc=com,以及 cn=config 中的配置后缀。
许多目录树有多个命名上下文可用于不同类型的条目,或者与逻辑数据划分一起使用。访问目录服务器的客户端可能不知道需要使用什么命名上下文。目录服务器有一个服务器配置属性,向客户端发出默认命名上下文信号,如果它们没有其他知道的命名上下文配置。
默认命名上下文在 cn=config 中的
nsslapd-defaultnamingcontext
属性中设置。这个值会被传播到 root DSE (Directory Server Agent Service Entry),客户端可以通过检查根 DSE 中的 defaultnamingcontext
属性来匿名查询:
ldapsearch -p 389 -h server.example.com -x -b "" -s base | egrep namingcontext
# ldapsearch -p 389 -h server.example.com -x -b "" -s base | egrep namingcontext
namingContexts: dc=example,dc=com
namingContexts: dc=example,dc=net
namingContexts: dc=redhat,dc=com
defaultnamingcontext: dc=example,dc=com
重要
要保持配置一致性,请不要从
nsslapd-allowed-to-delete-attrs
列表中删除 nsslapd-defaultnamingcontext
属性。
默认情况下,
nsslapd-defaultnamingcontext
属性包含在可以被删除的属性列表中,在 nsslapd-allowed-to-delete-attrs
属性中。这允许删除当前的默认后缀,并相应地更新服务器配置。
如果出于某种原因,
nsslapd-defaultnamingcontext
属性会从可以删除的配置属性列表中删除,则不会保留对该属性的更改。如果删除了默认后缀,则该更改无法传播到服务器配置。这意味着 nsslapd-defaultnamingcontext
属性保留旧信息,而不是为空(删除),这是正确的和当前配置。
2.1.2.2. 禁用后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在某些情况下,需要禁用目录中的后缀。如果禁用了后缀,客户端无法再访问与后缀相关的数据库内容。
2.1.2.2.1. 使用命令行禁用后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要使用命令行禁用后缀,请将后端数据库名称传递给 dsconf 后端后缀 set --disable 命令。例如,禁用 o=test 后缀:
- 显示后缀及其对应的后端:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot) o=test (test_database)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示每个后缀旁的后端数据库名称。在下一步中需要后缀的数据库名称。 - 禁用后缀:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend \ suffix set --disable "test_database"
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend \ suffix set --disable "test_database"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.2.3. 删除后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果不再需要后缀,管理员可以将其从数据库中删除。
警告
删除后缀也会删除与该后缀关联的所有数据库条目和复制信息。
2.1.2.3.1. 使用命令行删除后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
要使用命令行删除后缀,请使用 dsconf backend delete 命令。例如,要删除 o=test 后缀:
- 显示后缀及其对应的后端:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list dc=example,dc=com (userroot) o=test (test_database)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令显示每个后缀旁的后端数据库名称。在下一步中需要后缀的数据库名称。 - 删除后端数据库和对应的后缀:
dsconf -D "cn=Directory Manager" ldap://server.example.com backend delete test_database
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend delete test_database Deleting Backend cn=test_database,cn=ldbm database,cn=plugins,cn=config : Type 'Yes I am sure' to continue: Yes I am sure The database, and any sub-suffixes, were successfully deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.1.2.3.2. 使用 Web 控制台删除后缀 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用 Web 控制台删除后缀:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录目录服务器”。
- 选择实例。
- 打开菜单。
- 选择后缀,点 Delete Suffix。,然后选择
- 单击以确认。