启动slapd
不论是包安装还是编译安装的OpenLDAP服务,启动LDAP服务通常使用类似这样的方式运行:
/usr/sbin/slapd -h ldap:/// ldapi:/// -g openldap -u openldap -F /etc/ldap/slapd.d/
如果没有任何的配置是否可以启动slapd呢?
$mkdir ldap_slapd.d
$/usr/sbin/slapd -d 65535 -h ldap://localhost:3890 -F ldap_slapd.d
系统提示没有配置目录中没有 cn=config.ldif 文件
最简单的配置
现在在配置目录中写一个最简单的配置:
$cat ldap_slapd.d/cn=config.ldif
dn: cn=config
objectClass: olcGlobal
cn: config
$/usr/sbin/slapd -d 65535 -h ldap://localhost:3890 -F ldap_slapd.d
成功启动!在ldap_slapd.d下生成了cn=config 目录并且将基本的schema自动的导入了,从运行日志中也可以看到这些。
通过这个例子可以看到slapd运行的过程,但这样一个没有实际Backend数据库的slapd实例是没有实际意义的。
配置
slapd的配置就是运行的关键,在新版OpenLDAP中,LDAP配置不再是slapd.conf,而是一系列的配置文件,放置在一个配置目录下。LDAP将这个目录看成一种Backend,也就是config backend。配置目录中是若干的ldif文件,然后通过子目录的方式表现树形结构,以文件名表示配置节点的名称。
slapd.d 目录
LDAP的配置Backend包含3个内容:Schema、Backend、Database,都以ldif方式直接写在配置文件中。backend和database配置相对较小可直接编辑,而schema比较复杂,如有外部定义的schema更是麻烦,如果直接编辑很麻烦也容易出错。好在可以使用slaptest将旧式的.conf文件生成新配置。
实际上,slaptest的功能还不止这个,它还负责创建基本的数据库文件。最新版的OpenLDAP在安装后还是使用slapd.conf作为配置文件,然后在运行前创建配置Backend。
slapd.conf
slapd.conf由2个部分,先include schema文件,然后配置database。要注意后面database内容的语法是依赖core.schema的,所以没有 include core.schema,后面的内容是不符合语法的。
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /user/defined/special.schema
database bdb
suffix "dc=example,dc=com"
rootdn "cn=admin,dc=example,dc=com"
rootpw secret
directory /ldap/data/dir
index objectClass eq
slaptest
运行:
$sudo /usr/bin/slaptest -f schema.conf -F /etc/ldap/slapd.d
slaptest要完成2个工作:将按schema生成schema.ldif配置,然后在指定的目录下初始化bdb文件。