构建, 安装和配置OpenLDAP
本文以OpenLDAP 2.4.25为例,OS为REHL 5.1. 从 http://www.openldap.org/software/download/下载openLDAP,这里是openldap-2.4.25.tgz。
2. 解压缩文件。
3. 构建和安装openldap
./configure
编辑文件slapd.conf (通常位于目录 /usr/local/etc/openldap/),定义BDB,LDAP目录项后缀,以及rootdn和rootpw. 示例如下:
database bdb
suffix "dc=SMRTE,dc=HPSEL"
rootdn "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL"
rootpw secret
directory /usr/local/var/openldap-data
5. 启动slapd
sudo /usr/local/libexec/slapd (我当时登录的用户不是root,因此使用了sudo命令)
正确的返回结果如下:
dn:
1) 首先创建一个LDIF文件, 包含要添加的目录项.
dn: dc=SMRTE,dc=HPSEL
objectClass: dcObject
objectClass: organization
o: HPSEL
dc: SMRTE
objectClass: person
userPassword:secret
cn:falcon
sn:falcon
dn: cn=alanliu,dc=SMRTE,dc=HPSEL
objectClass: person
userPassword:secret
cn:alanliu
sn:alanliu
2) 然后运行命令ldapadd添加目录项.
ldapadd -x -D "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL" -W -f sel.ldif
3) 最后,运行ldapsearch验证是否添加成功。安装Berkeley DB:
cd db-4.7.25
../dist/configure --prefix=/usr/local/db4
make
make install
在OpenLDAP中添加自定义属性
在某些应用场景中,需要定义自定义属性,例如 'smprofile'。1. 一个LDAP属性可以包含在一个或多个objectClass. 因此,我们也需要定义一个objectClass. 新增的属性和objectclass可以添加到已有的OpenLDAP schema或保存在一个新的 schema文件. 以下示例中,新属性'smprofile' 和objectClass 'ourObject'定义在文件sel.schema中:
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{200} )
注: 1.3.6.1.4.1.6863.2.3.107 是smprofile这个属性的OID,唯一标识,IANA为OID定义了一个范围,企业范围内为企业使用,以保证唯一性。 SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{200} 定义了此属性直的合法字符以及最大长度。
DESC 'A very useful object'
SUP person STRUCTURAL
MUST smprofile )
2. 修改sldap.conf(位于 /usr/local/etc/openldap/),包含新定义的schema文件sel.schema.
3.终止并重启slapd。
4.编辑ldif文件sel.ldif,定义一个带有新属性的目录项,objectClass: person
userPassword:secret
cn:alanliu1
sn:alanliu1
objectClass: ourObject
smprofile:ldap-ess
ldapadd -x -D "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL" -W -f sel.ldif
6.使用LDAP浏览器检查此新属性是否添加成功。OpenLDAP的多值属性
如果LDAP属性的属性定义中没有包含'SINGLE-VALUE',则可以有多个值. 以'smprofile'为例,它即是多值属性。如果要添加多个值:1.编辑如下LDIF文件:
changetype:modify
add:smprofile
smprofile:ldap-essmmm
2.运行ldapmodify修改目录项.
修改目录项的属性值
以上面添加的目录项alanliu1为例. 如果要把'smprofile'的值从'ldap-ess'改为'ldap-essnnn':
1.编辑以下LDIF文件:
changetype: modify
replace:smprofile
smprofile:ldap-essnnn