您的位置:首页 > 运维架构

OpenLDAP安装和配置

2011-07-10 21:20 417 查看

构建, 安装和配置OpenLDAP

本文以OpenLDAP 2.4.25为例,OS为REHL 5.
1. 从http://www.openldap.org/software/download/下载openLDAP,这里是openldap-2.4.25.tgz。
2. 解压缩文件。
tar zxvf openldap-2.4.25.tgz
cd openldap-2.4.25
3. 构建和安装openldap
./configure
注: 这里所使用的安装包是源代码,因此需要进行编译后再安装。configure检查BerkeleyDB的版本. OpenLDAP 2.4及以上版本所支持的BDB版本应高于4.4. 参见http://www.openldap.org/doc/admin24/appendix-recommended-versions.html. 如果已经安装的BDB版本不支持,我们需要安装BerkeleyDB。参见"安装Berkeley DB". 在安装OpenLDAP时,已存在的BDB版本为4.3, 因此我重新安装了BDB.

export CPPFLAGS="-I/usr/local/db4/include"
export LDFLAGS="-L/usr/local/db4/lib -R/usr/local/db4/lib"
export LD_LIBRARY_PATH=/opt/db-4.7.25/build_unix/.libs
./configure
make
make install
4. 编辑slapd的配置文件
编辑文件slapd.conf (通常位于目录 /usr/local/etc/openldap/),定义BDB,LDAP目录项后缀,以及rootdn和rootpw. 示例如下:database bdbsuffix "dc=SMRTE,dc=HPSEL"rootdn "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL"rootpw secret
directory /usr/local/var/openldap-data
注: 访问LDAP服务器是通过root和rootpw绑定LDAP服务器来实现的。rootdn这个目录项只是为了访问LDAP而定义的,他不是必须出现在LDAP的目录树中。对于 rootpw, 可以使用名录"slappasswd -s secret" 来生成密码的哈希值,使用密码哈希值的rootpw line行如下:
rootpw {SSHA}ZKKuqbEKJfKSXhUbHG3fG8MDn9j1v4QN
5. 启动slapd
sudo /usr/local/libexec/slapd (我当时登录的用户不是root,因此使用了sudo命令)
为了检查LDAP服务器是否已经正常启动以及配置是否正确,可以运行位于/usr/local/bin/的命令ldapsearch:
ldapsearch -x -b -s base '(objectclass=*)' namingContexts
正确的返回结果如下:dn:namingContexts: dc=example,dc=com
6. 在LDAP目录添加目录项
1) 首先创建一个LDIF文件, 包含要添加的目录项.dn: dc=SMRTE,dc=HPSEL

description: create a open ldap
objectClass: dcObject
objectClass: organization
o: HPSEL
dc: SMRTE

dn: cn=falcon,dc=SMRTE,dc=HPSEL
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验证是否添加成功。
ldapsearch -x -b 'dc=SMRTE,dc=HPSEL' '(objectclass=*)'

安装Berkeley DB:

cd /opt
wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz 注: 在企业intranet, 通过代理服务器访问互联网. 要使用wget, 我们要修改文件/etc/wgetrc. 在此文件中,我们添加以下行:
http_proxy = http://xx.xx.xx.com:8080/ 这样,wget每次通过代理设置来访问internet。
tar zxvf db-4.7.25.tar.gz
cd db-4.7.25
注: 推荐为BerkeyleyDB打patch,以保证其稳定性。
cd build_unix/
../dist/configure --prefix=/usr/local/db4
make
make install

在OpenLDAP中添加自定义属性

在某些应用场景中,需要定义自定义属性,例如 'smprofile'。
1. 一个LDAP属性可以包含在一个或多个objectClass. 因此,我们也需要定义一个objectClass. 新增的属性和objectclass可以添加到已有的OpenLDAP schema或保存在一个新的 schema文件. 以下示例中,新属性'smprofile' 和objectClass 'ourObject'定义在文件sel.schema中:
attributetype ( 1.3.6.1.4.1.6863.2.3.107 NAME 'smprofile'
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} 定义了此属性直的合法字符以及最大长度。
objectclass ( 1.3.6.1.4.1.6863.2.4.57 NAME 'ourObject'
DESC 'A very useful object'
SUP person STRUCTURAL
MUST smprofile )
注: 对于objectClass 'ourObject', 'person' 是他的parent objectClass. 它必须包含smprofile。
2. 修改sldap.conf(位于 /usr/local/etc/openldap/),包含新定义的schema文件sel.schema.
include /usr/local/etc/openldap/schema/sel.schema
3.终止并重启slapd。
4.编辑ldif文件sel.ldif,定义一个带有新属性的目录项,
dn: cn=alanliu1,dc=SMRTE,dc=HPSEL
objectClass: person
userPassword:secret
cn:alanliu1
sn:alanliu1
objectClass: ourObject
smprofile:ldap-ess
5.运行ldapadd添加目录项
ldapadd -x -D "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL" -W -f sel.ldif6.使用LDAP浏览器检查此新属性是否添加成功。

OpenLDAP的多值属性

如果LDAP属性的属性定义中没有包含'SINGLE-VALUE',则可以有多个值. 以'smprofile'为例,它即是多值属性。如果要添加多个值:
1.编辑如下LDIF文件:
dn: cn=alanliu1,dc=SMRTE,dc=HPSEL
changetype:modify
add:smprofile
smprofile:ldap-essmmm
2.运行ldapmodify修改目录项.
ldapmodify -x -D "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL" -w secret -f sel.ldif
3.使用LDAP浏览器检查此新属性是否添加成功。

修改目录项的属性值

以上面添加的目录项alanliu1为例. 如果要把'smprofile'的值从'ldap-ess'改为'ldap-essnnn':
1.编辑以下LDIF文件:
dn: cn=alanliu1,dc=SMRTE,dc=HPSEL
changetype:modify
replace:smprofile
smprofile:ldap-essnnn
2.运行ldapmodify修改目录项.
ldapmodify -x -D "uid=Admin,cn=Manager,dc=SMRTE,dc=HPSEL" -w secret -f sel.ldif
3.使用LDAP浏览器检查此新属性是否修改成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息