已安装系统的 /etc/openldap/slapd.conf 中包含 LDAP 服务器的完整配置文件。在此简述了其中的各个项并说明了必要的调整。以符号 (#) 为前缀的项处于非活动状态。必须取消这个注释字符才能激活这些项。
例 36.2. slapd.conf:用于模式的 Include 指令
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema
这是 slapd.conf 中的第一个指令(如例 36.2 “slapd.conf:用于模式的 Include 指令”所示),用于指定组织 LDAP 目录所依据的模式。core.schema 是必需项。所需的其余模式会追加到此指令中。在包含的 OpenLDAP 文档中查找信息。
例 36.3. slapd.conf:pidfile 和 argsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
这两个文件包含启动 slapd 进程所用的 PID(进程 ID)和一些参数。在此没必要进行修改。
例 36.4. slapd.conf:访问控制
# Sample Access Control
# Allow read access of root DSE
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# access to dn="" by * read
access to * by self write
by users read
by anonymous auth
#
# if no access controls are present, the default is:
# Allow read by all
#
# rootdn can always write!
例 36.4 “slapd.conf:访问控制”节选自 slapd.conf,涉及如何管理服务器上的 LDAP 目录的访问权限。只要在数据库特定部分没有声明任何自定义访问规则,slapd.conf 的全局部分中的设置将始终有效。这些自定义声明会重写全局声明。如本例所示,所有用户都可以读取目录,但只有管理员 (rootdn) 才能写入此目录。LDAP 中的访问控制管理是一个非常复杂的过程。以下提示会有所帮助:
每条访问规则都具有如下结构:
access to <what> by <who> <access>
what 是一个占位符,表示授权访问的对象或属性。可以使用单独的规则来明确保护各个目录分支。还可以使用正则表达式通过一条规则处理目录树的各个区域。slapd 按照各条规则列在配置文件中的先后顺序依次评估它们。较通用的规则应列在较特定的规则之后 - 在评估 slapd 认为有效的第一条规则之后,随后的所有项都将被忽略。
who 确定应该授权谁来访问 what 确定的区域。可以使用正则表达式。slapd 同样会在评估第一条有效规则之后中止对随后的 who 的评估,所以应将较具体的规则列在较抽象的规则之前。可以使用 表 36.2 “用户组及其访问授权” 所示的项。
表 36.2. 用户组及其访问授权
标记 | 范围 |
|---|---|
| 所有用户,无一例外 |
| 未身份验证“匿名”用户 |
| 已身份验证用户 |
| 与目标对象连接的用户 |
| 与正则表达式匹配的所有用户 |
access 指定访问类型。请使用 表 36.3 “访问类型” 所列的选项。
slapd 会将客户机请求的访问权限与 slapd.conf 中授予的权限进行对比。如果规则允许的权限等于或高于请求的权限,则可以授予客户机权限。如果客户机请求的权限高于规则中声明的权限,便会拒绝授予权限。
例 36.5 “slapd.conf:访问控制示例”显示了一个简单示例,使用正则表达式可以随意指定这样的简单访问控制。
例 36.5. slapd.conf:访问控制示例
access to dn.regex="ou=([^,]+),dc=example,dc=com" by dn.regex="cn=Administrator,ou=$1,dc=example,dc=com" write by user read by * none
此规则声明只有各个 ou 项的管理员才有权写入他/她所管理的项。其他所有通过身份验证的用户只有读权限,其余人没有任何权限。
![]() | 建立访问规则 |
|---|---|
如果没有 | |
有关 LDAP 访问权限的详细信息和示例配置,请参见所安装的 openldap2 包中的联机文档。
除了可以使用中央服务器配置文件 (slapd.conf) 管理访问权限之外,还可以使用访问控制信息 (ACI)。ACI 允许储存 LDAP 树中各个对象的访问信息。这种访问控制尚未普及,开发人员认为它目前仍处于试用阶段。相关信息请参见 http://www.openldap.org/faq/data/cache/758.html。
例 36.6. slapd.conf:特定于数据库的指令
database bdbsuffix "dc=example,dc=com"
checkpoint 1024 5
cachesize 10000
rootdn "cn=Administrator,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret
# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap
# Indices to maintain index objectClass eq
overlay ppolicy
ppolicy_default "cn=Default Password Policy,dc=example,dc=com" ppolicy_hash_cleartext ppolicy_use_lockout
数据库类型(本案例中为 Berkeley)是在本部分的第一行设置的(请参见例 36.6 “slapd.conf:特定于数据库的指令”)。 | |
| |
| |
| |
| |
| |
| |
最后一个指令 | |
|
在此为数据库自定义的 Access 规则将取代全局 Access 规则。
在根据第 36.4 节 “LDAP 目录中的数据处理”所述的模式对 LDAP 服务器进行完全配置并设置全部所需项之后,可通过输入 rcldap start 以 root 身份启动 LDAP 服务器。要手动停止服务器,请输入命令 rcldap stop。使用 rcldap status 可请求运行中的 LDAP 服务器的状态。
可以使用第 20.2.3 节 “使用 YaST 配置系统服务(运行级别)”中所述的 YaST 运行级别编辑器,在引导和暂停系统时相应地自动启动和停止服务器。还可以如第 20.2.2 节 “Init 脚本”所述,在命令提示中使用 insserv 命令创建指向启动脚本和停止脚本的相应链接。