linux下openldap版本查询,Linux下安装openldap

Ubuntu apt-get

install安装参考:http://dongwang.wordpress.com/category/uncategorized/

普通linux安装,以XXX用户身份安装:

1、安装Berkeley

DB 4.7.25:伯克利大学嵌入式数据库解决方案,openldap拿它作为存储方案。

http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz下载到:/home/XXX/download/

# tar xvf

db-4.7.25.tar.gz

# cd

db_4.7.25

# cd build_unix/

#

../dist/configure -prefix=/home/XXX/app/BerkeleyDB

# make

# make install

2、安装openldap前准备:配置环境变量,参考openldap install文件

#export

CPPFLAGS="-I/home/XXX/app/BerkeleyDB/include -D_GNU_SOURCE"

注:不设置make时报getpeereid.c:65: error: storage size of ‘peercred’ isn’t

known错误

#export

LDFLAGS="-L/home/XXX/app/BerkeleyDB/lib"

注:不设置configure时报configure: error: BDB/HDB: BerkeleyDB not

available错误

#export

LD_LIBRARY_PATH="/home/XXX/download/db-4.7.25/build_unix/.libs"

注:不设置configure时报configure: error: Berkeley DB version

mismatch错误

3、安装openldap-2.4.15:

ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/openldap-2.4.15.tgz下载到/home/XXX/download/

#tar xvf

openldap-2.4.15.tgz

#cd

openldap-2.4.15/

#./configure

-prefix=/home/XXX/app/openldap

# make

depend

# make test

可跳过

# make

# make

install

4、配置openldap:

#cd

/home/XXX/app/openldap/etc/openldap

#gedit

slapd.conf

加入(注意:中间是空格+tab,顺序必须保证,有相互依赖关系):

include

/home/XXX/app/openldap/etc/openldap/schema/corba.schema

include

/home/XXX/app/openldap/etc/openldap/schema/cosine.schema

include

/home/XXX/app/openldap/etc/openldap/schema/inetorgperson.schema

include

/home/XXX/app/openldap/etc/openldap/schema/misc.schema

include

/home/XXX/app/openldap/etc/openldap/schema/openldap.schema

include

/home/XXX/app/openldap/etc/openldap/schema/nis.schema

include

/home/XXX/app/openldap/etc/openldap/schema/java.schema

将文件中的

database bdb

suffix

"dc=my-domain,dc=com"

rootdn

"cn=root,dc=my-domain,dc=com"

rootpw

secret

修改成自己的目录根,指定自己根的管理员,这里修改为root,与linux的root没有什么关系

rootdw

是管理员的密码,默认密码是secret,这里可以使用MD5加密。

#cd

/home/XXX/app/openldap/sbin

#slappasswd

New

password:

Re-enter new

password:

{SSHA}mHzQL7t4YG/a6g5mt2YPLE/+ErmekI34

也可以指定加密方式:

# slappasswd -h

{MD5}

将输出结果替换secret

5、启动openldap:

#

/home/XXX/app/openldap/libexec

# su root -c

"./slapd"

必须如此,1024以下的端口必须由root才能绑定,ldap是389端口。

如果启动不成功可以用

./slapd -d 1启动debug模式。。将在屏幕打印启动信息

#netstat -tlnp

发现389端口即启动成功

接下来的事情就是向数据库添加数据。ldap不支持sql,所以要用ldapadd这个程序来添加,添加的时候要用一个ldif文件,把要添加的东西写在里面,ldif的格式在admin

guide里面有说明。首先要添加根,这一步是必要的,不然任何数据都添加不进去。我们编辑一个init.ldif文件,包括建立my-domain.com、管理者為domain.com

底下的root、以及一個people的物件容器,用來放一般使用者。

dn:

dc=my-domain,dc=com

objectClass:

dcObject

objectClass:

organization

dc:

my-domain

o: my-domain

Company

dn:

cn=root,dc=my-domain,dc=com

objectClass:

organizationalRole

cn: root

dn:

ou=people,dc=my-domain,dc=com

objectClass:

organizationalUnit

ou: people

應該會看到你的organization、organizationRole、organizationUnit

這三個,也就是你的最高網路域名?最高管理者、以及一個準備用來容納使用者的people 項目。這個people

項目你當然可以自由取名。

提示:objectClass必须设置属性:

dcobject:dc用来表示一个域名的部分

organization:o用来表示一个组织的名称

person:cn和sn用来表示名和姓

organizationalPerson:与person相同。

organizationalRole:cn 表示管理者名称

organizationUnit:ou表示容器名称

详细参考:http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP-GILSchemaExtension.html

执行命令:

#cd

/home/XXX/app/openldap/bin

#ldapadd -D

"cn=root, dc=my-domain,dc=com" -w secret -f init.ldif

或者

#ldapadd -D

"cn=root, dc=my-domain,dc=com"  -W -f

init.ldif

说明:-D指定管理员目录

-f指定导入文件 -W表示弹出密码输入提示 如果是简单普通密码,则-w secret即可。

如果成功将提示:

adding new entry

dc=my-domain,dc=com

adding new entry

cn=root,dc=my-domain,dc=com

adding new entry

ou=people,dc=my-domain,dc=com

补充一:用户users.ldif

,其中userPassword在person声明,mail在inetOrgPerson声明

dn:cn=kehufankui,ou=people,dc=navinfo,dc=com

objectClass:

person

objectClass:

inetOrgPerson

sn:kehufankui

cn:kehufankui

userPassword:123

mail:loveflying88@sina.com

多个用户重述上面信息

补充二:启动注意解决办法:

错误一:openldap安装成功后,另外启动一个终端,slapd启动时将报错:

./slapd: error

while loading shared libraries: libdb-4.7.so: cannot open shared

object file: No such file or directory

出错原因:找不到bdb的链接库。

解决办法一:完全拷贝。

#cp

/home/XXX/app/BerkeleyDB//include/* /usr/include/

#cp

/home/XXX/app/BerkeleyDB/BerkeleyDB/lib/* /usr/lib/

解决办法二(推荐):

要把/home/XXX/app/BerkeleyDB/lib的库路径直接加到/etc/ld.so.conf文件最后一行,添加完成后执行一次

ldconfig,使用配置文件生效。

提示:

ld.so.conf记录了编译、或运行时使用的动态链接库(.so)的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件。

错误二:debug模式启动时报daemon: bind(7) failed errno=13错误

出错原因:是1024以下的端口必须由root才能绑定。因为ldap默认是389端口。所以才报这个错误。

解决办法:su root -c

"./slapd"

6、扩展openldap

schema配置:

ldap默认的schema属性声明有时候无法满足现实的需要,比如要用openldap备份微软ldap的数据,sAMAccountName是微软特有的属性,这样我们就需要扩展属性。

举例说明,扩展inetOrgPerson这个objectClass,增加sAMAccountName这个属性。

打开inetorgperson.schema文件,添加:

#sAMAccountName

attributetype (

2.16.840.1.113730.3.1.217

NAME

'sAMAccountName'

DESC ''

EQUALITY

caseIgnoreMatch

SUBSTR

caseIgnoreSubstringsMatch

SYNTAX

1.3.6.1.4.1.1466.115.121.1.15{128}

SINGLE-VALUE

)

#targetDN

attributetype (

2.16.840.1.113730.3.1.218

NAME

'targetDN'

DESC ''

EQUALITY

caseIgnoreMatch

SUBSTR

caseIgnoreSubstringsMatch

SYNTAX

1.3.6.1.4.1.1466.115.121.1.15{256}

SINGLE-VALUE

)

在May里添加:

MAY (

....

$ userPKCS12 $ sAMAccountName

$targetDN)

)

即可,参考:

http://blog.163.com/duanhehui0928@126/blog/static/115272342201031122227764/

http://hi.baidu.com/teamtogether/blog/item/fde2b81184f17fc8a7ef3f0f.html

7、后记

微软ldap和openldap在dn的存储设计上有本质区别。

openldap:the DN

isn't an attribute value - it's theobject's name itself.

微软ldap:the DN is

an attribute value - it's DistinguishedName。

dn是一个比较重要的属性,作为object 的唯一路径标识,删除、修改object都要使用到,而java

ldaptemplate访问openldap时却无法获取dn值,值得一提的是python-ldap

search默认获取的就是("dn值",{属性集合}),非常方便。

针对java

ldaptemplate的设计失误,只能在openldap增加一个targetDN来存储dn值来变相解决这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值