千家信息网

openldap的搭建(版本在2.4以下)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,目录服务就是按照树状存储信息的模式。LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,LDAP标准实际上是在X.500标准基础上产生的一个简
千家信息网最后更新 2026年10月31日openldap的搭建(版本在2.4以下)


目录服务就是按照树状存储信息的模式。LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,LDAP标准实际上是在X.500标准基础上产生的一个简化版本。

l LDAP特点:

<1>LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了

<2>LDAP可以很快地得到查询结果,不过在写方面,就慢得多

<3>LDAP提供了静态数据的快速查询方式:Client/server模型,Server 用于存储数,Client提供操作目录信息树的工具,这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前

<4>LDAP是一种开放Internet标准,LDAP协议是跨平台的的Interent协议它是基于X.500标准的,与X.500不同,LDAP支持TCP/IP(即可以分布式部署)

l LDAP适用范围:

LDAP存储数据需要从不同的地点读取,但是不需要经常更新的信息最为有用。

l 身份认证在LDAP中提供三种认证机制:

<1>匿名。

<2>基本认证:通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证

<3>LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证。

l Ldap端口号:389,636

cat /etc/services | grep ldap

ldap 389/tcp 明文

ldap 389/udp 明文

ldaps 636/tcp # LDAP overSSL

ldaps 636/udp # LDAPover SSL

l TLS 安全性:

分布式LDAP 是以明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL 的后继者,由OpenSSL 包)加密机制来解决这个问题。

l LDAP目录数据结构

<1>在LDAP中目录是按照树型结构组织--目录信息树(DIT) ,DIT是一个主要进行读操作的数据库。

<2>DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;条目是具有分辨名DN(Distinguished Name)的属性-值对(Attribute-value,简称AV)的集合。

在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用ROOT做根,通常称为BaseDN.

因为历史(X.500)的原因,LDAP目录用OU(Organization Unit)从逻辑上把数据分开来。Ou 也是一种条目,容器条目,Ou 下就是真正的用户条目

DN,Distinguished Name分辨名。在LDAP中,一个条目的分辨名叫做"DN",DN是该条目在整个树中的唯一名称标识,DN相当于关系数据库表中的关键字(Primary Key);是一个识别属性,通常用于检索

l 常见的两种DN设置:

基于cn(姓名)

cn=test,ou=auth,dc=baike,dc=com

最常见的cn是/etc/group转来的条目

基于uid(User ID)

uid=test, ou=auth,dc=baike,dc=com

最常见的uid是/etc/passwd转来的条目

Base DN:LDAP目录树的最顶部就是根,也就是Base DN。

LDIF 格式(此格式用于LDAP数据导入、导出):LDIF是LDAP数据库信息的一种文本格式。

一、检查环境:

×××服务器:10.0.18.122

[root@TEST1~]# cat /etc/redhat-release

CentOSrelease 5.8 (Final)

[root@TEST1~]# uname -a

Linux TEST12.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64GNU/Linux

二、安装openldap软件

[root@TEST1~]# yum -y install openldap-*

######################################################################

Yum安装openlap时安装和升级的软件包如下:

Install:

openldap-servers.x86_640:2.3.43-25.el5_8.1

openldap-servers-overlays.x86_640:2.3.43-25.el5_8.1

openldap-servers-sql.x86_640:2.3.43-25.el5_8.1

DependencyInstalled:

libtool-ltdl.x86_640:1.5.22-7.el5_4

unixODBC-libs.x86_640:2.2.11-10.el5

Updated:

openldap.i3860:2.3.43-25.el5_8.1

openldap.x86_640:2.3.43-25.el5_8.1

openldap-clients.x86_640:2.3.43-25.el5_8.1

openldap-devel.i3860:2.3.43-25.el5_8.1

openldap-devel.x86_640:2.3.43-25.el5_8.1

######################################################################

三、配置openldap

<1>备份配置文件sldap.conf和ldap.conf

[root@TEST1~]# cd /etc/openldap/

[root@TEST1openldap]# ls

cacerts DB_CONFIG.example ldap.conf schema slapd.conf

[root@TEST1openldap]# cp slapd.conf slapd.conf_liqunyan_$(date +%F)

[root@TEST1openldap]# cp ldap.conf ldap.conf_liqunyan_$(date +%F)

[root@TEST1openldap]# ls

cacerts ldap.conf schema slapd.conf_liqunyan_2013-02-27

DB_CONFIG.example ldap.conf_liqunyan_2013-02-27 slapd.conf

<2>用哈希散列的方式生成root管理员密码

[root@TEST1openldap]# slappasswd -h {SSHA}

Newpassword:

Re-enter newpassword:

{SSHA}jT3zYgVa1Ys7x4Bp2g/Iec5wDTLQfk4t

<3>修改配置文件slapd.conf

[root@TEST1openldap]# cat slapd.conf|egrep -v "^#|^$"

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/inetorgperson.schema

include /etc/openldap/schema/nis.schema

allowbind_v2

pidfile /var/run/openldap/slapd.pid

argsfile /var/run/openldap/slapd.args

TLSCACertificateFile/etc/pki/tls/certs/ca-bundle.crt

TLSCertificateFile /etc/pki/tls/certs/slapd.pem

TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

[l1] access todn.base="cn=Subschema" by * read

access to *

by self write

by users read

by anonymous auth

database bdb

suffix "dc=abc,dc=com"

rootdn "cn=Manager,dc=abc,dc=com"

[l2] rootpw {SSHA}jT3zYgVa1Ys7x4Bp2g/Iec5wDTLQfk4t[l3]

directory /var/lib/ldap

indexobjectClass eq,pres

indexou,cn,mail,surname,givenname eq,pres,sub

indexuidNumber,gidNumber,loginShell eq,pres

indexuid,memberUid eq,pres,sub

indexnisMapName,nisMapEntry eq,pres,sub

<4>启动ldap服务

[root@TEST1openldap]# /etc/init.d/ldap start

Startingslapd: [ OK ]

[root@TEST1openldap]# netstat -lant|grep 389

tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN

[root@TEST1openldap]# ps -ef|grep ldap

ldap 26976 1 0 04:37 ? 00:00:00 /usr/sbin/slapd -h ldap:///ldaps:/// -u ldap

root 26987 3148 0 04:40 pts/0 00:00:00 grep ldap

四、迁移用户数据到目录服务数据库

[root@TEST1~]# cd /usr/share/openldap/migration/

[root@TEST1migration]#vi migrate_common.ph

# DefaultDNS domain

$DEFAULT_MAIL_DOMAIN = "abc.com";

# Default base

$DEFAULT_BASE = "dc=abc,dc=com"

[l4] <1>首先创建基本的数据库文件

[root@TEST1migration]#./migrate_base.pl >base.ldif[l5]

修改生成的base.ldif文件

(修改成自己想要的结构,本实验中的结构如下:

)

[root@TEST1migration]# cat base.ldif

dn:dc=abc,dc=com

dc: abc

objectClass:domain

[root@TEST1migration]# cp base.ldif base1.ldif

[root@TEST1migration]# cat base1.ldif

dn: ou=accounts,dc=abc,dc=com

ou: accounts

objectClass: top

objectClass: organizationalUnit

dn: ou=sysusers,dc=abc,dc=com

ou: sysusers

objectClass: top

objectClass: organizationalUnit

[l6] objectClass中organizationalUnit属性的说明:

objectclass ( 2.5.6.5 NAME 'organizationalUnit'

DESC'RFC2256: an organizational unit'

SUPtop STRUCTURAL

MUSTou

MAY (userPassword $ searchGuide $ seeAlso $ businessCategory $

x121Address $ registeredAddress $ destinationIndicator $

preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $

telephoneNumber $ internationaliSDNNumber $

facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $

postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )

以上内容在/etc/openldap/schema/core.schema中有相关说明。

[root@TEST1migration]# cp base1.ldif base2.ldif

[root@TEST1migration]# cat base2.ldif

dn:ou=users,ou=accounts,dc=abc,dc=com

ou: users

objectClass:top

objectClass:organizationalUnit

dn:ou=groups,ou=accounts,dc=abc,dc=com

ou: groups

objectClass:top

objectClass:organizationalUnit

<2>从/etc/group中迁移ldap中用户组的信息

[root@TEST1migration]# grep root /etc/group >group.in

[root@TEST1 migration]# ./migrate_group.pl group.in>group.ldif

[l7] [root@TEST1migration]# cat groups.ldif

dn:cn=staff,ou=groups,ou=accounts,dc=abc,dc=com

objectClass:posixGroup

cn: staff

gidNumber: 1

posixGroup的相关信息:

objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup'

DESC'Abstraction of a group of accounts'

SUPtop STRUCTURAL

MUST (cn $ gidNumber )

MAY (userPassword $ memberUid $ description ) )

在/etc/openldap/schema/nis.schema中可以查看到相关信息。

<3>从/etc/passwd和/etc/shadow中迁移ldap中用户的信息:

[root@TEST1migration]# grep root /etc/passwd > passwd.in

[root@TEST1 migration]# ./migrate_passwd.plpasswd.in >users.ldif

[l8] [root@TEST1 migration]# cat users.ldif

dn:cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail:liqunyan@aa.com

employeeType:staff

userPassword::e1NIQX1GN1ZLZVRFWUIvY0NqUkJjV0NodTdrWW2275pxc9

dn:cn=aa,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::55Ge

sn:: 546L

cn: aa

uid: aa

uidNumber:2872

gidNumber: 1

homeDirectory:/home/aa

loginShell:/bin/sh

mail:aa@aa.com

employeeType:staff

userPassword::e1NIQX1mWFVTMEtPVG81R21sd25RRnc3cjRjWEZ5UXc9

[root@TEST1migration]# cat sysusers.ldif

dn:uid=lsync,ou=sysusers,dc=abc,dc=com

uid: lsync

userPassword::e01ENX1wMnB5WWVqTmZkb0hYT1VLcWFFb3JBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

dn:uid=mail,ou=sysusers,dc=abc,dc=com

uid: mail

userPassword::e01ENX05ZG5DcnU5ZFhnSDN4Sk02cWkyOGV3PT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

dn:uid=auth,ou=sysusers,dc=abc,dc=com

uid: auth

userPassword::e01ENX1KeCtKMmNQZWJYOGV3L3VjS0NsOTFBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

account和simpleSecurityObject的相关信息:

objectclass ( 0.9.2342.19200300.100.4.5 NAME'account'

SUPtop STRUCTURAL

MUSTuserid

MAY (description $ seeAlso $ localityName $

organizationName $ organizationalUnitName $ host )

)

objectclass ( 0.9.2342.19200300.100.4.19 NAME'simpleSecurityObject'

SUP topAUXILIARY

MUSTuserPassword )

<4>将以上的结构一层一层导入到ldap中

[root@TEST1migration]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f base.ldif

Enter LDAPPassword: [l9]

adding newentry "dc=abc,dc=com"

[root@TEST1migration]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f base1.ldif

Enter LDAPPassword:

adding newentry "ou=accounts,dc=abc,dc=com"

adding newentry "ou=sysusers,dc=abc,dc=com"

[root@TEST1migration]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fbase2.ldif

Enter LDAPPassword:

adding newentry "ou=users,ou=accounts,dc=abc,dc=com"

adding newentry "ou=groups,ou=accounts,dc=abc,dc=com"

[root@TEST1migration]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fgroups.ldif

Enter LDAPPassword:

adding newentry "cn=staff,ou=groups,ou=accounts,dc=abc,dc=com"

[root@TEST1migration]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fsysusers.ldif

Enter LDAPPassword:

adding newentry "uid=lsync,ou=sysusers,dc=abc,dc=com"

adding newentry "uid=mail,ou=sysusers,dc=abc,dc=com"

adding newentry "uid=auth,ou=sysusers,dc=abc,dc=com"

ldapadd -x-D "cn=Manager,dc=abc,dc=com" -W -f users.ldif

Enter LDAPPassword:

adding newentry "cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com"

adding newentry "cn=aa,ou=users,ou=accounts,dc=abc,dc=com"

<5>查看导入的用户信息。

[root@TEST1migration]# /usr/bin/ldapsearch-LLL -W -x -H ldap://127.0.0.1 -D "cn=Manager,dc=abc,dc=com" -b"ou=sysusers,dc=abc,dc=com" "(uid=lsync)"[l10]

Enter LDAPPassword:

dn:uid=lsync,ou=sysusers,dc=abc,dc=com

uid: lsync

userPassword::e01ENX1wMnB5WWVqTmZkb0hYT1VLcWFFb3JBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

[root@TEST1migration]#/usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=liqunyan)"[l11]

Enter LDAPPassword:

dn:cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail:liqunyan@aa.com

employeeType:staff

userPassword::e1NIQX1GN1ZLZVRFWUIvY0NqUkJjV0NodTdrWW2275pxc9

说明:

《1》 修改用户的密码:

知道自己的密码,给自己设置新的密码:

[root@TEST1openldap]# ldappasswd -x -H ldap://127.0.0.1 -D"cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com" -W"cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com" -S

Newpassword:

Re-enter newpassword:

Enter LDAPPassword: [l12]

Result:Success (0)

[root@TEST1openldap]# /usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=liqunyan)"

Enter LDAPPassword:

dn: cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail: liqunyan@aa.com

employeeType:staff

userPassword::e1NTSEF9RktlNDRtSXhiaDRKMlZ4RDFFa2lTaW5jQmRpZXdzcGI=

管理员给任何一个用户修改密码:

[root@TEST1openldap]# ldappasswd -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -W"cn=aa,ou=users,ou=accounts,dc=abc,dc=com" -S

Newpassword:

Re-enter newpassword:

Enter LDAPPassword: [l13]

Result:Success (0)

[root@TEST1openldap]# /usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=aa)"

Enter LDAPPassword:

dn:cn=aa,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::55Ge

sn:: 546L

cn: aa

uid: aa

uidNumber:2872

gidNumber: 1

homeDirectory:/home/aa

loginShell:/bin/sh

mail:aa@aa.com

employeeType:staff

userPassword::e1NTSEF9cXhPajMzemNpYkJUWVpBN2R3OHpsMGV3ZkJ3bXA3ZTc=


[l1]此三行最前端不要有空格

[l2]Suffix和rootdn修改成自己的域后缀。

[l3]管理员密码,注意rootpw和密码之间不能存在空格,要用tab键隔开。

[l4]将此选项中的域名修改成自己的域名。

[l5]基本的数据库文件可以用此命令生成,也可以自己手写,如果手写,手写内容必须符合相关属性。

[l6]添加ou account和sysusers(就是abc.com的分支机构)

[l7]同样,group.ldif可以使用命令生成,也可以自己手写创建。

[l8]同样,sysusers.ldif可以使用命令生成,也可以自己手写创建。

[l9]此密码为上面设置的root密码。

[l10]查询lsync用户信息

[l11]查看liqunyan用户信息。

[l12]此处输入的是自己的密码

[l13]此处输入的就是管理员root的密码。


密码 数据 信息 条目 用户 目录 数据库 文件 格式 结构 认证 就是 生成 属性 标准 管理员 服务 管理 内容 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网科技公司简介 河南真二互联网科技有限公司 互联网的科技创新 科技服务与互联网 期待互联网科技 齐家互联网科技 成都互联网科技公司 极限挑战互联网科技 互联网金融 科技创新 互联网科技视频素材 科技伦理 互联网公司 注册互联网科技公司经营范围大全 坤平互联网科技 燊美集互联网科技有限公司 互联网科技的全部知识 云鲸互联网络科技有限公司 上海旺乐尼互联网科技有限公司 互联网科技自媒体灵感 山东亿川互联网科技有限责任公司 深圳互联网络科技有限公司 碳银互联网科技 银川新华互联网科技职业技术培训学校图片 茂名市互联网科技产业园 世界互联网科技公司市值排名 广州新华互联网科技学校电竞方面 企晟互联网信息科技有限公司 高科技互联网套路 杭州披云加互联网科技有限公司 湖北辰鑫科技互联网
0