最新消息:

openldap系列1-安装

OpenLDAP admin 3091浏览 0评论

一。介绍

  目录服务就是按照树状信息组织模式,实现信息管理和服务接口的一种方法。目录服务系统一般由两部分组成:第一部分是数据库,一种分布式的数据库,且拥有一个描述数据的规划;第二部分则是访问和处理数据库有关的详细的访问协议。
  目录服务与关系型数据库不同的是,目录不支持批量更新所需要的事务处理功能,目录一般只执行简单的更新操作,适合于进行大量数据的检索;目录具有广泛复制信息的能力,从而在缩短响应时间的同时,提高了可用性和可靠性。目前,目录服务技术的国际标准有两个,即较早的X.500标准和近年迅速发展的LDAP 标准。

2.2 X.500是一个协议族

  X.500实际上不是一个协议,它是由一个协议族组成:X.501模型强调目录服务基本模型和概念;X.509认证框架是如何在X.500中处理目录客户和服务器的认证;X.511 抽象服务定义X.500被要求提供的功能性服务;X.518 分布式操作过程表明如何跨越多台服务器处理目录服务;X.519 协议规范即是X.500协议,包括目录访问协议DAP、目录系统协议DSP、目录操作绑定协议DOP和目录信息Shadowing协议 DISP;X.520 选定的属性类型要求是X.500自己使用的属性类型;X.521选定的对象类即为X.500自己使用的对象类;X.525复制是如何在目录服务器之间复制目录内容。
 //** 在这些X.500标准中主要定义有多种内容。一个信息模型:确定目录中信息的格式和字符集,如何在项中表示目录信息(定义对象类、属性等模式);一个命名空间:确定对信息进行的组织和引用,如何组织和命名项——目录信息树DIT和层次命名模型;一个功能模型:确定可以在信息上执行的操作;一个认证框架:保证目录中信息的安全,如何实现目录中信息的授权保护——访问控制模型;一个分布操作模型:确定数据如何进行分布和如何对分布数据执行操作,如何将全局目录树划分为管理域进行管理——目录管理模型,客户端与服务器通信的协议—目录访问协议DAP,将用户请求在服务器之间进行链接所需的目录系统协议DSP,将选定的信息在服务器之间进行复制所需的目录信息映像协议DISP,用于自动在服务器之间协商连接配置的目录操作绑定协议DOP。 **/
X.500虽然是一个完整的目录服务协议,但在实际应用的过程中,却存在着不少障碍。由于目录访问协议DAP这种应用层协议是严格遵照复杂的ISO 七层协议模型制定的,对相关层协议环境要求过多,主要运行在UNIX机器上,在许多小系统上,如PC和Macintosh上无法使用,因此没有多少人按照 DAP开发应用程序,TCP/IP协议体系的普及,更使得这种协议越来越不适应需要。 2.3 LDAP目录访问标准
  LDAP协议从1993年批准,产生了LDAP V1版本,随后于1997年发布了第三个版本LDAP V3,它的出现是LDAP协议发展的一个里程碑性标志,它使LDAP协议不仅仅作为X.500的简化版,同时提供了LDAP协议许多自有的特性,使 LDAP协议功能更为完备,具有了更大的生命力。
  LDAP V3协议也不是一个协议,而是一个协议族。RFC 2251——LDAP V3核心协议,定义了LDAP V3协议的基本模型和基本操作;RFC 2252——定义了LDAP V3中的基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象类)以及标准的系统数据模式;RFC 2253——定义了LDAP V3中的分辨名(DN)表达方式;RFC 2254——定义了LDAP V3中的过滤器的表达方式;RFC 2255——LDAP统一资源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定义了LDAP V3中的认证方式;RFC 2830——定义了如何通过扩展使用TLS服务;RFC 1823——定义了C的LDAP客户端API开发接口;RFC 2847——定义了LDAP数据导入、导出文件接口LDIF。
   LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。
组织单元
  在目录基本 DN 的下面是容器或组织单元(OU),它们从逻辑上对您的数据进行分隔或分组。这里的选项通常由您业务或安装的组织结构确定。另外,第二层 OU 可用来进一步分隔数据。例如,国际企业可以使用下列结构:

dc=foobar,dc=com
ou=customers
ou=northamerica
ou=southamerica
ou=asia
ou=europe
ou=employees
ou=group
ou=projects
ou=accounting
ou=resource
ou=service

  一般的经验方法可以使您的组织结构尽可能地保持简单,并且不危及将来的可扩展性。还要紧记一点,您将结构容器嵌套得越深,它返回查询所用的时间就越长。

个别项

  在 LDAP 结构的组织单元下面是实际的项。下

对象类型

  对象类由 LDAP 目录使用来定义给定类型的对象可以有哪些属性。对象类还定义项必须有什么属性,以及项可以有什么属性。所有对象类都从其父对象类继承需求,然后添加它们自己的需求。
  ::__IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__::0
LDAP目录结构示意图

二安装 LDAP

  由于LDAP所具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使LDAP广泛地应用于基础性、关键性信息的管理,如用户信息、网络资源信息等。LDAP的应用主要涉及几种类型。信息安全类:数字证书管理、授权管理、单点登录;科学计算类:DCE(Distributed Computing Envirionment,分布式计算环境)、UDDI (Universal Description,Discovery and Integration, 统一描述、发现和集成协议);网络资源管理类:MAIL系统、DNS系统、网络用户管理、电话号码簿;电子政务资源管理类:内网组织信息服务、电子政务目录体系、人口基础库、法人基础库。
yum安装

651051621133168629
885520276733587478

 

openldap-clients-2.3.27-5.i386.rpm:客户端操作的相关程序。

openldap-devel-2.3.27-5.i386.rpm:开发包。

测试服务

1653665488176751298

 

2040412106177215451

启动的是slapd进程,并有一个提示信息,提示没有DB_CONFIG文件。可通过以下命令将DB_CONFIG文件复制到/var/lib/ldap/目录中

# cp  /etc/openldap/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG
3702521843652476691

 

rpm –qa | grep ldap
安装后在/etc/rc.d/init.d目录有目录服务的守护进程:LDAP
安装后在/etc/openldap目录下有目录相关的配置文件:slapd.conf——-服务端主配置文件
                                              ldap.conf——-客户端配置文件
chkconfig – – list ldap
chkconfig – – level 345 ldap on
  其中:
  slapd 提供LDAP服务
  ldap-utils 提供客户工具
  安装完毕后, 其配制文件位于/etc/ldap/目录下:

三.搭建ldap服务

808396133114952784

 

1967228612232827579


tony@tonybox:~#ls -l /etc/ldap/
total 16
-rw-r--r-- 1 root root 333 2006-06-19 17:56 ldap.conf
drwxr-xr-x 2 root root 4096 2006-12-29 11:33 schema
-rw------- 1 root root 4351 2006-12-29 11:33 slapd.conf

/etc/ldap/schema/目录下为schema文件

$ ls /etc/ldap/schema/ -l
total 208
-rw-r--r-- 1 root root 8231 2006-11-11 05:39 corba.schema
-rw-r--r-- 1 root root 20591 2006-11-11 05:39 core.ldif
-rw-r--r-- 1 root root 19762 2006-11-11 05:39 core.schema
-rw-r--r-- 1 root root 74080 2006-11-11 05:39 cosine.schema
-rw-r--r-- 1 root root 1553 2006-11-11 05:39 dyngroup.schema
-rw-r--r-- 1 root root 6360 2006-11-11 05:39 inetorgperson.schema
-rw-r--r-- 1 root root 13984 2006-11-11 05:39 java.schema
-rw-r--r-- 1 root root 2471 2006-11-11 05:39 misc.schema
-rw-r--r-- 1 root root 7723 2006-11-11 05:39 nis.schema
-rw-r--r-- 1 root root 3391 2006-11-11 05:39 openldap.ldif
-rw-r--r-- 1 root root 1601 2006-11-11 05:39 openldap.schema
-rw-r--r-- 1 root root 19689 2006-11-11 05:39 ppolicy.schema
-rw-r--r-- 1 root root 2968 2006-11-11 05:39 README
3.2 启动与停止 服务启动

745627213308177801

# ps aux |grep slapd

openldap 6406 0.0 0.2 14608 2764 ?    Ssl 13:27  0:00 /usr/sbin/slapd -g openldap -u openldap
tony   6417 0.0 0.0  4892  752 pts/1  R+  13:28  0:00 grep slapd
3.3 配制

  比如说我们的域名是debsir.org, 在配制文件/etc/ldap/slapd.conf中可以做如下调整

database    bdb                   #设置使用的资料库
suffix     "dc=debsir,dc=org"           #设置目录后缀
rootdn     "cn=admin,dc=debsir,dc=org"       #设置目录管理员
directory    "/var/lib/ldap"             #设置数据库路径
rootpw     secret                 #设置管理密码

  这里用了明文的“secret”密码。这样设置不安全,如果需使用加密的密码,则可以借助slappasswd 命令比如:

$ slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}4QrcOUm6Wau+VuBX8g+IPg==

  其中使用-h 选项用于指定加密方式, 它支持{CRYPT}, {MD5}, {SMD5}, {SSHA}, 和 {SHA} 方式
  然后修改/etc/ldap/slapd.conf 中的rootpw 行为:

rootpw     {MD5}4QrcOUm6Wau+VuBX8g+IPg==

  修改后,需要重启slapd服务

1715871458030122650
1630866015063303396


# sudo /etc/init.d/slapd restsart

  这时可以使用客户端工具ldapsearch连接服务器查看目录信息:
四。测试环境

# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

  如果命令执行成功,返回一些信息,则说明服务器正常运行了

2131891473607938628
或者

$ ldapsearch -x -b dc=debsir,dc=org

如果启动不成功,它会提示一些出错信息,多数是slapd.conf配置出错。回头仔细核查一下配置文档。
五导入数据
下面就开向数据库中输入数据了:有两种方式:
1、  交互方式:
         2、  ldif文件方式
     ldapadd 在线添加 (openldap服务开启)

2020145907854154772

 BASE  dc=example, dc=com #设置目录起点
交互方式:在命令提示符下:ldapadd –x –D “cn=root,dc=pip.com” –W

建立根域及数据项
dd.ldif文件内容:
dn:dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o:example Inc
dc:example

dn:cn=root,dc=example,dc=com
objectClass: organizationalRole
cn:root

dn:ou=it,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou:it

dn:ou=hr,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou:it

dn:ou=people,dc=example,dc=com
objectClass: organizationalUnit
objectClass: top
ou:it

创建完后用命令:ldapadd  -x  -D  “cn=root,dc=example,dc=com”  -W -f  dd.ldif
测试:ldapsearch –x –b ‘ou=cw,dc=example,dc=com
或:ldapsearch –x –D “cn=root,
dc=example,dc=com” -W

修改LDAP数据库中的数据:
Ldapmodify –x –D “cn=root,
dc=example,dc=com” –W

3.4 客户端配置文档

  客户端配置文档是ldap.conf。该文档相当简单,其实不用配置也能正常操作。

BASE  dc=it, dc=com #设置目录起点
URI  ldap://localhost ldap://localhost:666
3.5 数据录入 定义一个组织单元

  创建文件group.ldif,内容如下:


dn: ou=people,dc=debsir,dc=org
objectClass: organizationalUnit
ou: people
创建用户

  创建文件person.ldif,内容如下:
dn: cn=tony,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail:
etony@tom.com
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
  * dn唯一地确定了这个对象的位置
  * objectClass确定了这个对象所具有的属性
  * objectClass可以有多个
  注意每行后面不要留有空格。

3. 将信息添加到数据库
# ldapadd  -x  -D  "cn=root,dc=example,dc=com"  -W    -f  group.ldif
Enter LDAP Password:
adding new entry "ou=people,
dc=example,dc=com"

#ldapadd  -x  -D  "cn=root,dc=example,dc=com"  -W    -f  person.ldif
Enter LDAP Password:
adding new entry "cn=tony,ou=people,
dc=example,dc=com"

  其中
  * x,使用简单认证方式
  * -v,输出更多信息
  * -D cn=admin,dc=cg,dc=com,dc=cn,使用此用户进行增加操作,显然用管理员比较好使,增加用户的权限不是谁都有的
  * -W,提示输入密码,也可以在命令行里面给出密码,这时的参数应该是 -w password,这对于脚本来说比较方便

4.查看

  然后可以用以下命令查看录入信息


# ldapsearch -x -b cn=tony,ou=people,
dc=example,dc=com
# extended LDIF
#
# LDAPv3
# base <cn=tony,ou=people,
dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# tony, people, debsir.org
dn: cn=tony,ou=people,
dc=example,dc=com
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail:
etony@tom.com
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
3.6 权限定义
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,
dc=example,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="cn=admin,
dc=example,dc=com" write
by * read
3.7 常用操作 修改密码
# ldappasswd -x -v -S -W -D cn=admin,
dc=example,dc=com cn=tony,ou=people,dc=example,dc=com
New password:
Re-enter new password:
Enter LDAP Password:
ldap_initialize( <DEFAULT> )
Result: Success (0)

  * S 参数是要求命令提示用户输入两次新的密码,来确认密码更新,使用 -s newpasswd 可以在命令行中指定新密码。
删除对象

  删除对象的命令则是 ldapdelete,也要指定两个对象,哪个对象删除和删除哪个对象


ldapdelete -x -v -W -D cn=admin,
dc=example,dc=com cn=tony,ou=people,dc=example,dc=com修改对象
# ldapmodify -x -D cn=admin,
dc=example,dc=com -W -f person.ldif
Enter LDAP Password:
modifying entry "cn=tony,ou=people,
dc=example,dc=com"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
添加帐号测试:

3128875841116789076
2822631066455699243
ldapadd -x -D “cn=root,dc=example,dc=com” -W -f Desktop/p.ldif
2829104990919988053

ldapsearch -x -b “dc=example,dc=com”

转载请注明:爱开源 » openldap系列1-安装

您必须 登录 才能发表评论!