3.4. 通用数据库指令

本节中的指令仅适用于定义它们的数据库。每种类型的数据库都支持它们。

database <type>

此指令标记新的数据库实例定义的开始。 <type> 应该是前一项中列出的后端类型之一。

示例

database bdb

这标记新的 BDB 后端数据库实例定义的开始。

readonly { on | off }

此指令将数据库置于“只读”模式。 任何修改数据库的尝试都将返回“拒绝执行”错误。

默认

readonly off

replica uri=ldap[s]://<hostname>[:<port>] | host=<hostname>[:<port>]
                [bindmethod={simple|kerberos|sasl}]
                ["binddn=<DN>"]
                [saslmech=<mech>]
                [authcid=<identity>]
                [authzid=<identity>]
                [credentials=<password>]
                [srvtab=<filename>]

此指令为该数据库指定一个复制站点。 uri= 参数指定方案、主机以及可选的端口,可以在其中找到从属 slapd 实例。域名或 IP 地址都可以用于 <hostname>。如果未给出 <port>,则使用标准 LDAP 端口号(389 或 636)。

注意:host 参数已被弃用,请使用 uri 参数。

uri 允许将副本 LDAP 服务器指定为 LDAP URI,例如 ldap://slave.example.com:389 或 ldaps://slave.example.com:636

binddn= 参数给出绑定为从属 slapd 更新的 DN。 它应该是一个具有从属 slapd 数据库读/写权限的 DN。 它还必须与从属 slapd 配置文件中的 updatedn 指令匹配。 通常,此 DN 不应 与主数据库的 rootdn 相同。 由于 DN 很可能包含嵌入的空格,因此整个“binddn=<DN>”字符串应包含在双引号中。

bindmethod 是 simple、kerberos 或 sasl,具体取决于连接到从属 slapd 时是使用简单的基于密码的身份验证、Kerberos 身份验证还是 SASL 身份验证。

除非已采取足够的完整性和隐私保护措施(例如 TLS 或 IPSEC),否则不应使用简单身份验证。 简单身份验证需要指定 binddn 和 credentials 参数。

Kerberos 身份验证已被弃用,建议使用 SASL 身份验证机制,特别是 KERBEROS_V4 和 GSSAPI 机制。 Kerberos 身份验证需要 binddn 和 srvtab 参数。

通常建议使用 SASL 身份验证。 SASL 身份验证需要使用 saslmech 参数指定机制。 根据机制,可以使用 authcid 和 credentials 分别指定身份验证身份和/或凭据。 authzid 参数可用于指定授权身份。

查看此 URL 了解更多详情: 使用 Slurpd 进行复制

replogfile <filename>

此指令指定复制日志文件的名称,slapd 将更改记录到该文件。 复制日志通常由 slapd 写入,并由 slurpd 读取。 通常,此指令仅在使用 slurpd 复制数据库时使用。 但是,如果 slurpd 未运行,您也可以使用它来生成事务日志。 在这种情况下,您需要定期截断该文件,因为它会无限期地增长。

查看此 URL 了解更多详情: 使用 Slurpd 进行复制

rootdn <dn>

此指令指定不受访问控制或管理限制约束的 DN,用于对该数据库进行操作。 该 DN 不需要引用目录中的条目。 该 DN 可以引用 SASL 身份。

基于条目的示例

rootdn "cn=Manager, dc=example, dc=com"

基于 SASL 的示例

rootdn "uid=root,cn=example.com,cn=digest-md5,cn=auth"

rootpw <password>

此指令可用于为 rootdn 指定密码(当 rootdn 设置为数据库中的 DN 时)。

示例

rootpw secret

也允许以 RFC 2307 格式提供密码哈希值。 slappasswd 可用于生成密码哈希值。

示例

rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN

哈希值是使用命令 slappasswd -s secret 生成的。

suffix <dn suffix>

此指令指定将传递到此后端数据库的查询的 DN 后缀。 可以给出多个 suffix 行,并且每个数据库定义至少需要一个。

示例

suffix "dc=example, dc=com"

DN 以 “dc=example, dc=com” 结尾的查询将被传递到此后端。

注意: 当选择将查询传递到的后端时,slapd 会按文件中的出现顺序查看每个数据库定义中的 suffix 行。 因此,如果一个数据库后缀是另一个数据库后缀的前缀,则它必须出现在配置文件中之后的位置。

syncrepl

此指令用于保持复制数据库与主数据库同步,以便复制数据库内容与主数据库内容保持最新。

本文档不详细介绍此指令,因为我们正在配置单个 LDAP 服务器。 有关此指令的更多信息,请访问:LDAP 同步复制

updatedn <dn>

此指令仅适用于从属 slapd。 它指定允许对副本进行更改的 DN。 这可能是 slurpd 在对副本进行更改时绑定的 DN,也可能是与 SASL 身份关联的 DN。

基于条目的示例

updatedn "cn=Update Daemon, dc=example, dc=com"

基于 SASL 的示例

updatedn "uid=slurpd,cn=example.com,cn=digest-md5,cn=auth"

查看此 URL 了解更多详情: 使用 Slurpd 进行复制

updateref <URL>

此指令仅适用于从属 slapd。 它指定返回给客户端的 URL,这些客户端在副本上提交更新请求。 如果多次指定,则提供每个 URL。

示例

updateref ldap://master.example.net