3.8. 配置文件示例

以下是一个配置文件示例,其中穿插了解释性文本。它定义了两个数据库来处理 X.500 树的不同部分;两者都是 BDB 数据库实例。显示的行号仅供参考,不包含在实际文件中。首先,是全局配置部分。

1.    # example config file - global configuration section
2.    include /usr/local/etc/schema/core.schema
3.    referral ldap://root.openldap.org
4.    access to * by * read

第 1 行是注释。第 2 行包含另一个配置文件,其中包含核心模式定义。第 3 行的 referral 指令意味着,不属于下面定义的任何数据库的查询将被转发到运行在主机 root.openldap.org 的标准端口(389)上的 LDAP 服务器。

第 4 行是全局访问控制。它适用于所有条目(在任何适用的数据库特定访问控制之后)。

配置文件的下一部分定义了一个 BDB 后端,它将处理对树的 "dc=example,dc=com" 部分的查询。该数据库将被复制到两个从属 slapd,一个在 truelies 上,另一个在 judgmentday 上。将为多个属性维护索引,并且 userPassword 属性将受到保护,防止未经授权的访问。

5.     # BDB definition for the example.com
6.     database bdb
7.     suffix "dc=example,dc=com"
8.     directory /usr/local/var/openldap-data
9.     rootdn "cn=Manager,dc=example,dc=com"
10.    rootpw secret
11.    # replication directives
12.    replogfile /usr/local/var/openldap/slapd.replog
13.	   replica uri=ldap://slave1.example.com:389
14.            binddn="cn=Replicator,dc=example,dc=com"
15.            bindmethod=simple credentials=secret
16.    replica uri=ldaps://slave2.example.com:636
17.            binddn="cn=Replicator,dc=example,dc=com"
18.            bindmethod=simple credentials=secret
19.    # indexed attribute definitions
20.    index uid pres,eq
21.    index cn,sn,uid pres,eq,sub
22.    index objectClass eq
23.    # database access control definitions
24.    access to attr=userPassword
25.            by self write
26.            by anonymous auth
27.            by dn.base="cn=Admin,dc=example,dc=com" write
28.            by * none
29.    access to *
30.            by self write
31.            by dn.base="cn=Admin,dc=example,dc=com" write
32.            by * read

第 5 行是注释。数据库定义的开始由第 6 行的 database 关键字标记。第 7 行指定了要传递到此数据库的查询的 DN 后缀。第 8 行指定了数据库文件将驻留的目录。

第 9 行和第 10 行标识了数据库“超级用户”条目和关联的密码。此条目不受访问控制或大小或时间限制的约束。请记住使用 slappasswd 加密 rootpw。

示例:rootpw {SSHA}Jq4xhhkGa7weT/0xKmaecT4HEXsdqiYA

第 11 行到第 18 行用于复制。有关这些指令的更多信息,请参阅 复制 链接。

第 20 行到第 22 行指示要为各种属性维护的索引。

第 24 行到第 32 行指定了此数据库中条目的访问控制。由于这是第一个数据库,因此控制也适用于任何数据库中未保存的条目(例如 Root DSE)。对于所有适用的条目,userPassword 属性可由条目本身和 "admin" 条目写入。它可能用于身份验证/授权目的,但在其他情况下不可读。所有其他属性都可由条目和 "admin" 条目写入,但可以被所有用户(无论是否经过身份验证)读取。

示例配置文件的下一部分定义了另一个 BDB 数据库。这一个处理涉及 dc=example,dc=net 子树的查询,但由与第一个数据库相同的实体管理。请注意,如果没有第 39 行,则由于第 4 行的全局访问规则,将允许读取访问。

33.    # BDB definition for example.net
34.    database bdb
35.    suffix "dc=example,dc=net"
36.    directory /usr/local/var/openldap-data-net
37.    rootdn "cn=Manager,dc=example,dc=com"
38.    index objectClass eq
39.    access to * by users read