快速部署ldap服务

时间:2024-05-02 18:34:14

                 快速部署ldap服务

                                     作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.LDAP概述

.什么是目录服务
  ()目录是一类为了浏览和搜索数据二十几的特殊的数据库,例如:最知名的的微软公司的活动目录(active directory)就是目录数据库的一种。目录服务时按照梳妆形式存储信息的,目录包含基于属性的描述性信息,并且支持高级的过滤功能。
  ()一般来说,目录不支持大多数事务性数据库所支持的高吞吐两盒复杂的更新操作。目录进行更新操作,可以说是要么全部,要么都不的原子操作,目录服务适合的业务应用在于提供大量的查询和搜索操作。
  ()为了保证目录数据的可用性和卡可靠性,她们在确保提供快速的查询和搜索操作的同事,还提供了主从服务器同步目录数据信息的能力,这相当于传统的Mysql数据库的主从同步一样,可以最大限度的确保基于目录业务的持续可用性。
  ()广义的目录服务概念,可以有多重不同的方式来提供目录服务,不同的目录所允许存储的信息是不同的,在信息如何被引用,查询,更新以及防止未经守群的访问等问题上,不同的目录所允许存储的信息是不同的,在信息如何被引用,查询,更新以及防止未经授权的访问等问题上,不同的目录的处理方式也有诸多的不同。一些目录服务时为本地的,只提供受限的服务,(比如,单机上的finger服务)。另一些服务时大范围的(global),提供广阔得多的服务(比如面向整个因特网)。大范围的服务通常是分布式的,这也就意味着数据是分布在多台机器上的,这些计数器一起来提供目录服务。典型的大范围服务定义一个统一的名称空间(namespace)来给出一个相同的数据试图(data view),而不管你相对于数据所在的位置。DNS是一个典型的大范围分布式目录服务的例子。 .什么是ldap
  ()LDAP是Lightweight Directory Access Protocol (轻量级目录访问协议)的缩写。正如它的名字所表明的那样,它是一个轻量级的目录访问协议,特质基于X.500的目录访问协议的简化版本。LADP运行在TCP/IP或者其他的面向连接的传输服务至上。LADP完整的技术规范由RFC2251 “The Lightweight Directory Access Protocol(V3)”和其他几个在RFC3377中定义的文档组成。我们不需要研究的那么深,因为我们又不会对它进行二次开发,我们运维只要能了解到它的目录结构,以及它的用法就OK了,因此我们可以用两句话总结以上内容:
  ()LADP是轻量目录访问协议(Lightweight Directory Access Protocal)的缩写;
  ()LADP标准实际上是在X.500标准基础 上产生的一个简化版本; .什么是X.
  ()X.500由ITU-T和ISO定义,它实际上不是一个协议,而是有一个协议族组成,包括了从X.501到X.525等一系列非常完整的目录服务协议。X。500主要具备以下特征:
    a>.分散维护
      运行X.500的每一个站点只负责人本地目录部分,可以立即更新和维护操作;
    b>.搜索性能
      X.500具有强大的搜素功能,支持用户建立的任意复杂查询。
    c>.单一全局命名空间
      类似于DNS,X.500为用户提供单一同性命名空间(Single Homogeneous Namespace)。与DNS相比,X。500目录中定义了信息结构,运行本地扩展。
    d>.结构化信息结构
      X.500目录中定义了信息结构,运行本地扩展。
    e>.基于标准的目录服务
      由于X.500可以被用于建立一个基于标准的目录,因此在某种意义上,请求应用目录信息(电子邮件,资源自动分配器,特定目录工具)的应用程序就能访问重要且有简直的信息。
  ()从技术上来说,LADP是一个到X.500目录服务的目录访问协议,X.500是一个OSI目录协议。最初,LADP客户单通过网关(gateway)访问X.500目录服务。在客户和网关之间运行LADP和X.500目录访问协议(Directory Access Protocol,DAP),而X.500目录访问协议时位于网关和X.500之间的。DAP是一个重量级的协议,在整个OSI协议栈上进行操作,而且需要占用大量的计算资源。LADP被设计的在TCP/IP层上操作,以小得多的代价实现了大多数DAP的功能。
  ()虽然LADP仍旧可以通过网关访问X.500目录服务器,但是现在通常都是在X.500服务器上直接实现LADP。
  ()单独的LADP守护程序sladp,可以被看做是一个轻量级的X.500目录服务器。也就是说,他没有实现X.500完整的DAP协议。作为一个轻量级的目录服务器,sladp实现的仅仅是X.500模型的一个子集。我们可以理解是LADP是X.500的一个简单的实现。 .LADP与X.500的相同点
  LADP是X.500标准中的目录访问协议DAP的一个子集,可用于建立X.500目录。因此这两个目录技术标准有着许多的共同之处:
    a>.在平台上,都实现了一个通用的平台结构,提供了一个操作系统和应用程序需要的信息服务类型,可以被许多平台和应用程序接收和实现;
    b>.在信息模型上,都是用了项,对象类,属性等概念的模式来描述信息;
    c>.在命名空间上方面,都是用了目录信息结构和层次命名模型;
    d>.在功能模型上,都使用了相似的操作命令来管理目录信息;
    e>.在认证框架方面,都可以实现用户名称和密码,或者基于安全加密方式的认真机制;
    f>.早灵活性上,他们的目录规模都可大可小,达到全球目录树,小到只有一台目录服务器;
    g>.在分布性方面,目录信息都可以分布在多个目录服务器中,这些服务器可以由各个组织管理,既保证了目录信息总体结构的一致性,又满足了分级管理的需要。 .LADP与X.500的差别
  a>.LADP基于Internet协议,X.500基于OSI(开放式系统互联)协议,建立在应用层上的X.500目录访问协议DAP,需要在OSI会话层和表示层上进行许多的建立连接和包处理的任务,需要特殊的网络软件实现对网络的访问;LADP则直接运行在更简单和更通用的TCP/IP或其他可靠的传输层协议上,避免了在OSI会话和表示层的开销,是链接的建立和包的处理更简单,更快,对于互联网和企业网应用更理性。
  b>.LADP协议更为简单,LADP继承了X.500最好的特性,同时去掉了它的复杂性,LADP通过使用查找操作实现列表方式和读操作,另一方面省去了X.500中神猫的和很少使用的服务控制和安全特性,只保留常用的特性,简化了LADP的实现。
  c>.LADP通过引用机制实现分布式访问,X. DSA通过服务器之间的链操作实现分布式的访问,这样查询的压力九中与服务器端;而LADP通过客户端API实现分布式操作(对于应用透明)平衡了负载;
  d>.LADP实现具有低费用,已配置和一管理的特点,经过性能测试,LADP比X.500㕛更少的响应时间;LADP提供了满足应用程序对目录服务所需求的特性。 .LADP中的常用名词缩写及含义
  ()dc
      Domain Componet 域名的部分,其格式是讲完整的域名分成几个部分,比如域名为“caiq.org”,变成dc=caiq,dc=org
  ()uid
      User Id 用户ID,如“yinzhengjie”
  ()ou
      Organization Unit 组织单位,类似于Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“中国检验检疫科学研究院”
  ()cn
      Common Name 公共名称,如“尹正杰”
  ()sn
      Surname 姓,如“尹”
  ()dn
      Distinguished Name 唯一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个文艺的名称,如“uid=yinzhengjie,ou=中国检科院,dc=caiq,dc=org”
  ()rdn
      Relative dn 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=yinzhengjie”或“cn=尹正杰”
  ()c
      Country 国家,如“CN”或“US”等
  ()o
      Organization 组织名,如:“*质检总局” .LADP目录服务的特点
  LDAP目录服务具有下列特点:
    a>.LDAP是一个跨平台的,标准的协议,近几年来得到了业界广泛的认可;
    b>.LADP的结构用树形结构来表示,而不是用表格。因此不用SQL语句维护了;
    c>.LADP提供了静态数据的快速查询方式,但在写数据方面并不擅长;
    d>.LADP服务可以使用基于“推或"拉"的复制信息技术,用简单的活基于安全证书的安全认证,复制部分或全部数据,既保证了数据的安全性,又提高了数据的访问效率;
    e>.LDAP是一个安全的协议,LDAP v3支持SASL(Simple Authentication and Securityh Layer),SSL(Secure Socket Layer)和TLS(Transport Layer Security),使用认证来确保事物的安全,另外,LDAP提供了不同层次的访问控制,以限制不同用户的访问权限;
    f>.LADP支持一类数据存储,LADP存储的数据可由是文本资料,二进制图片等;
    g>.Client/Server模型:Server用于存储树,Client提供操作目录信息数的工具,这些工具可以将数据库的内容以文本格式(LDAP数据交换格式,LDIF)呈现在我们的面前;
    h>.LDAP是一种开放Internet标准,LADP协议时跨平台的Internt协议,它是基于X.500标准的,与X.500不同,LADY支持TCP/IP(即可以分不知部署) .LDAP是怎样工作的?
LDAP目录服务器是基于客户/服务器模式的。一个或者多个LDAP服务器包含着组成整个目录信息树(DIT)的数据。客户连接到服务器并且并发一个请求(request)。然后服务器要么以一个回答(answer)予以回应,要么给出一个指针,客户可以通过此指针获取到所需的数据(通常,该指针是指向另一个LDAP服务器)。无论客户连到哪个LDAP服务器,它看到的都是同一个目录视图(view)。这是LDAP这类全局目录服务的一个重要特征。

二.LDAP目录结构

LDAP目录服务时通过目录数据库来存储网络信息来提供目录服务的,为了方便用户迅速查找定位信息,目录数据库是一目录信息树(Directory nformation Tree,缩写为DIT)为存储方式的树形存储结构,目录信息树及其相关概念构成了LDAP协议的信息模型。
  a>.在LADP中,目录是按照树形结构组织----目录信息树,它是一个主要进行读操作的数据库;
  b>.DIT由条目(Entry)组成,条目相当于关系数据库中的表的记录;
    条目是具有分辨名DN(Distinguished Name)的属性-值对(Attribute-value,简称AV)的集合。在UNIX文件系统中,最顶层是根目录(root),LDAP目录通常也用ROOT做根,通常称为BaseDN。因为历史(X.)的原因,LDAP目录用OU(Organization Unit)从逻辑上把数据分开来。Ou也是一种条目,容器条目。Ou下即使整整的用户条目。 .LDAP目录结构的相关术语
  a>.什么是DN
      DN(Distinguished Name),即分辨名。在LDAP中,一个条目的分辨名叫做"DN",DN是该条目在整个树中的唯一名称标识,DN相当于关系数据库表中的关键字(Primary Key);它是一个识别属性,通常用于检索。
  b>.DN的两种设置
      基于cn(姓名) cn=尹正杰,ou=中国检科院,dc=caiq,dc=org,dc=cn,最常见的cn是从/etc/group转来的条目;
      基于uid(User ID)uid=yinzhengjie,ou=中国检科院,dc=caiq,dc=org,dc=cn,最常见的uid是/etc/passwd转来的条目;
  c>.Base DN
      LADP目录树的最顶部就是根,也就是Base DN。
  d>.LDIF格式
      LDIF格式是用于LDAP数据导入,导出的格式。LDIF是LDAP数据库信息的一种文本格式。 .LADP目录信息模型
  a>.什么样的信息可以存储在目录当中?
      LDAP的信息模型是基于条目的(entry)。一个条目就是一些具有全局唯一的标识名(Distinguished Name,简写做DN)的属性的集合。DN用于无二义性的纸袋一个唯一的条目。条目的每一个属性都有一个类型(type),一个或者多个值(value)。类型往往是特定字符串的简写,比如用“cn”指代“common name”,或是"mail"指代电子邮件地址。值(value)的语法依赖于类型(type)。比如,类型为cn的属性可能包含值"尹正杰"。类型为mail的属性可能包含值“yinzhengjie@caiq.gov.com”。类型为jpegPhoto的属性可能包含二进制格式的JPEG图像。、   b>.信息在目录中是如何组织的?
      在LDAP中,条目是按树状的层次结构组织的。传统上,这个机构旺旺是代理界限或组织界限的反应。代表国家的条目位与整个目录树的顶层。之下的条目则代表各个州以及国家性的组织。在下面的条目则代表着组织单位,个人,打印机,文件,或者你所能想到的其他的东西。
      目录是也可以按照因特网域名组织结构,因为它允许按照DNS对目录服务进行定时,这种命名方式正变得越来越受欢迎。下图是按照域名进行组织的一个LADP目录树,相比传统的命名方式更加让用户易于接受。
      另外,LDAP允许你通过使用一种叫做objectClass的特殊属性来控制哪些属性是条目所必须的,哪些属性是条目可选的。objectClass属性的值是由条目所必须遵守的方案(schema)来定义的。
  c>.信息是如何被引用的?
      一个条目是通过它的标识名来引用的。而标识名(Relative DistinguishedName 或者RDN)是由标识名和它的父条目名连在一起构成的。
  d>.信息是如何被访问的?
      LDAP定义了一个查询和更新目录的操作,支持的操作包括从目录中添加和删除条目,更改一游的条目,更改已有的的名字。然而,大多数情况下LDAP是用于搜索目录中的信息的。通过指定搜索过滤器,LDAP可以在目录的相关部分搜索想相符的条目。满足过滤条件的每一个条目都能收到请求消息。
  e>.怎样保护信息不受未经授权的访问?
      一些目录服务不提供保护,允许信息对任何人可见。LDAP提供了一套机制来对客户进行身份确认,或者让客户证明他拥有连接到服务器的身份,这无疑为对服务器进行全方位的访问控制铺平了道理,从而确保了服务器上所包含信息的安全。LDAP也支持privacy和integrity的安全服务。

三.LDAP的配置模式

LDAP服的结果重要功能如下:
  a>.基本的目录查询服务;
  b>.目录查询代理服务;
  c>.异机复制的数据;
  d>.分布式的目录服务 .本地基本的目录查询服务
  在这种配置模式下,你的slapd只为你本地域提供目录服务。他不会以任何方式与别的目录服务器交互。 .带有指针(Referrals)的本地目录服务
  即目录查询代理服务,类似DNS转发服务器
  在这种配置模式下,你为你的本地域运行了一个LDAP服务器,并且将它配置成为当客户的请求超出你的本地域的处理能力的时候能够返回一个指针,该指针指向一个具备处理客户请求能力的更高级的服务器地址。你可以自己运行这一服务,也可以使用已提供给你的一个。
  如果你想运行本地目录服务并且参与全局的目录,那么运行这种模式。例如:openldap作为微软活动目录的代理查询服务。。 .同步复制的目录服务
  slurpd守护成是用来将主slapd上的改变传播到一个或多个从属的slapd上。
  这种配置模式可以在前面的两种配置模式之一和起来使用,在前面的两种情况中,单独的slapd不能提供足够的可用性和可靠性。 .分布式的目录服务
  在这种配置模式下,本地的服务被分割成多个更小的服务,每一个都可能被复制,并且通过上级(superior)或者下级(subordinate)指针(referral)粘合起来。

四.LDAP服务的应用领域

LDAP目录服务,适用那些需要从不同的地点读取信息,但是不需要经常更新的业务信息最为有用。
  LDAP的应用主要涉及一下几种类型:
  >.信息安全类:
    数字证书管理,授权管理,单点登录。
  >.科学计算类:
    DCE(Distributed Computing Environment,分布式计算环境),UDDI(Universal Description,Discovery and Integration,统一描述,发现和继承协议)。
  >.网络资源管理类:
    MAIL系统,DNS系统,网络用户管理,电话号码簿。
  >.电子政务资源管理类:
    内网组织信息服务,电子服务目录体系,人物基础库,法人基础库。
  我们单位基本上是用来来创建每个员工的财务账号,这个账号可以让员工进行财务报销使用。

五.安装LDAP

1>.安装openldap

[root@node202.yinzhengjie.org.cn ~]# yum -y install openldap openldap-servers openldap-clients
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package openldap.x86_64 :2.4.-.el7 will be updated
---> Package openldap.x86_64 :2.4.-.el7_6 will be an update
---> Package openldap-clients.x86_64 :2.4.-.el7_6 will be installed
---> Package openldap-servers.x86_64 :2.4.-.el7_6 will be installed
--> Processing Dependency: libltdl.so.()(64bit) for package: openldap-servers-2.4.-.el7_6.x86_64
--> Running transaction check
---> Package libtool-ltdl.x86_64 :2.4.-.el7_3 will be installed
--> Finished Dependency Resolution Dependencies Resolved ===========================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================
Installing:
openldap-clients x86_64 2.4.-.el7_6 updates k
openldap-servers x86_64 2.4.-.el7_6 updates 2.2 M
Updating:
openldap x86_64 2.4.-.el7_6 updates k
Installing for dependencies:
libtool-ltdl x86_64 2.4.-.el7_3 base k Transaction Summary
===========================================================================================================================================
Install Packages (+ Dependent package)
Upgrade Package Total download size: 2.8 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
openldap-servers-2.4.-.el7 FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/updates/x86_64/Packages/openldap-servers-2.4.44-21.el7_6.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
(/): openldap-clients-2.4.-.el7_6.x86_64.rpm | kB ::
(/): libtool-ltdl-2.4.-.el7_3.x86_64.rpm | kB ::
(/): openldap-2.4.-.el7_6.x86_64.rpm | kB ::
(/): openldap-servers-2.4.-.el7_6.x86_64.rpm | 2.2 MB ::
-------------------------------------------------------------------------------------------------------------------------------------------
Total 1.6 MB/s | 2.8 MB ::
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : openldap-2.4.-.el7_6.x86_64 /
Installing : libtool-ltdl-2.4.-.el7_3.x86_64 /
Installing : openldap-servers-2.4.-.el7_6.x86_64 /
Installing : openldap-clients-2.4.-.el7_6.x86_64 /
Cleanup : openldap-2.4.-.el7.x86_64 /
Verifying : openldap-servers-2.4.-.el7_6.x86_64 /
Verifying : openldap-2.4.-.el7_6.x86_64 /
Verifying : libtool-ltdl-2.4.-.el7_3.x86_64 /
Verifying : openldap-clients-2.4.-.el7_6.x86_64 /
Verifying : openldap-2.4.-.el7.x86_64 / Installed:
openldap-clients.x86_64 :2.4.-.el7_6 openldap-servers.x86_64 :2.4.-.el7_6 Dependency Installed:
libtool-ltdl.x86_64 :2.4.-.el7_3 Updated:
openldap.x86_64 :2.4.-.el7_6 Complete!
[root@node202.yinzhengjie.org.cn ~]#

[root@node202.yinzhengjie.org.cn ~]# yum -y install openldap openldap-servers openldap-clients

[root@node202.yinzhengjie.org.cn ~]# id ldap      #安装成功后会生成ldap用户。
uid=(ldap) gid=(ldap) groups=(ldap)
[root@node202.yinzhengjie.org.cn ~]#

2>.拷贝数据库配置文件

[root@node202.yinzhengjie.org.cn ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# chown ldap:ldap /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# ll -d /var/lib/ldap/DB_CONFIG
-rw-r--r-- ldap ldap Jun : /var/lib/ldap/DB_CONFIG
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# cat  /var/lib/ldap/DB_CONFIG
# $OpenLDAP$
# Example DB_CONFIG file for use with slapd() BDB/HDB databases.
#
# See the Oracle Berkeley DB documentation
# <http://www.oracle.com/technology/documentation/berkeley-db/db/ref/env/db_config.html>
# for detail description of DB_CONFIG syntax and semantics.
#
# Hints can also be found in the OpenLDAP Software FAQ
# <http://www.openldap.org/faq/index.cgi?file=2>
# in particular:
# <http://www.openldap.org/faq/index.cgi?file=1075> # Note: most DB_CONFIG settings will take effect only upon rebuilding
# the DB environment. # one 0.25 GB cache
set_cachesize # Data Directory
#set_data_dir db # Transaction Log settings
set_lg_regionmax
set_lg_bsize
#set_lg_dir logs # Note: special DB_CONFIG flags are no longer needed for "quick"
# slapadd() or slapindex() access (see their -q option).
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]#

[root@node202.yinzhengjie.org.cn ~]# cat /var/lib/ldap/DB_CONFIG        #DB_CONIFG中主要是关于Berkeley DB的相关的一些配置

3>.启动OpenLDAP Server

[root@node202.yinzhengjie.org.cn ~]# systemctl start slapd
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# systemctl enable slapd
Created symlink from /etc/systemd/system/multi-user.target.wants/slapd.service to /usr/lib/systemd/system/slapd.service.
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]# systemctl status slapd
● slapd.service - OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; vendor preset: disabled)
Active: active (running) since Tue -- :: EDT; 11s ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Main PID: (slapd)
CGroup: /system.slice/slapd.service
└─ /usr/sbin/slapd -u ldap -h ldapi:/// ldap:/// Jun :: node202.yinzhengjie.org.cn systemd[]: Starting OpenLDAP Server Daemon...
Jun :: node202.yinzhengjie.org.cn runuser[]: pam_limits(runuser:session): wrong limit value 'unlimited ' for limit t… 'hard'
Jun :: node202.yinzhengjie.org.cn runuser[]: pam_unix(runuser:session): session opened for user ldap by (uid=)
Jun :: node202.yinzhengjie.org.cn runuser[]: pam_unix(runuser:session): session closed for user ldap
Jun :: node202.yinzhengjie.org.cn slapd[]: @(#) $OpenLDAP: slapd 2.4. (Jan ::) $
mockbuild@x86-.bsys.centos.org:/builddir/build/BUILD/openldap-.../slapd
Jun :: node202.yinzhengjie.org.cn slapd[]: tlsmc_get_pin: INFO: Please note the extracted key file will not be prote...sions.
Jun :: node202.yinzhengjie.org.cn slapd[]: slapd starting
Jun :: node202.yinzhengjie.org.cn systemd[]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]#

[root@node202.yinzhengjie.org.cn ~]# systemctl status slapd        #slapd即standard alone ldap daemon,该进程默认监听389端口

4>.查看监听端口

[root@node202.yinzhengjie.org.cn ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *: *:*
LISTEN 127.0.0.1: *:*
LISTEN *: *:*
LISTEN ::: :::*
LISTEN ::: :::*
[root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]#

六.设置ldap管理员(root)密码

1>.生成一个LDAP管理用户root密码

[root@node202.yinzhengjie.org.cn ~]# slappasswd       #使用改名了,配置你的密码,他会根据计算,给你算出一个字符串。
New password:         #我这里输入的密码为"yinzhengjie"
Re-enter new password:
{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J            #这个字符串就是根据你输入的密码得到的,一会我们会用到他。
[root@node202.yinzhengjie.org.cn ~]#

2>.自定义LDAP配置属性

[root@node202.yinzhengjie.org.cn ~]# cat passwd.ldif    #这里的文件名称随意起,但文件后缀最好以 ldif 结尾。
dn: olcDatabase={}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW:{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J
[root@node202.yinzhengjie.org.cn ~]# 以上配置文件关键参数说明:
ldif即LDAP Data Interchange Format,是LDAP中数据交换的一种文件格式。文件内容采用的是key-value形式,注意value后面不能有空格。
上面内容中dn即distingush name
olc即Online Configuration,表示写入LDAP后不需要重启即可生效
changetype: modify表示修改一个entry,changetype的值可以是add,delete, modify等。
add: olcRootPW表示对这个entry新增了一个olcRootPW的属性
olcRootPW:{SSHA}demsoYhw/y4Rz9Pgbpv6KBBzuVQ1t53J指定了属性值

3>.初始化LDAP配置

[root@node202.yinzhengjie.org.cn ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f passwd.ldif     #使用ldapadd命令讲我们上一步自定义的文件属性写入LADP中
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={0}config,cn=config" [root@node202.yinzhengjie.org.cn ~]#
[root@node202.yinzhengjie.org.cn ~]#

4>.导入schema

[root@node202.yinzhengjie.org.cn ~]# ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=collective,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=corba,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=core,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
additional info: olcAttributeTypes: Duplicate attributeType: "2.5.4.2" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=duaconf,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=dyngroup,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=inetorgperson,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=java,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=misc,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=openldap,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=pmi,cn=schema,cn=config" SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=ppolicy,cn=schema,cn=config" [root@node202.yinzhengjie.org.cn ~]#

[root@node202.yinzhengjie.org.cn ~]# ls /etc/openldap/schema/*.ldif | while read f; do ldapadd -Y EXTERNAL -H ldapi:/// -f $f; done      #schema包含为了支持特殊场景相关的属性,可根据选择导入,这里先全部导入

七.设定默认域

1>.先使用slappasswd生成一个密码

[root@node202.yinzhengjie.org.cn ~]# slappasswd
New password:       #我这里输入的密码为"ADMIN"
Re-enter new password:
{SSHA}76TjdXHIDRFDRzfyi0t/tsYLmkyY3TPD
[root@node202.yinzhengjie.org.cn ~]#

2>.自定义LDAP配置属性

[root@node202.yinzhengjie.org.cn ~]# cat domain.ldif
dn: olcDatabase={}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" read by * none dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=yinzhengjie,dc=org,dc=cn dn: olcDatabase={}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=yinzhengjie,dc=org,dc=cn dn: olcDatabase={}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW:{SSHA}76TjdXHIDRFDRzfyi0t/tsYLmkyY3TPD  #这里需要用上面生成的密码来替换 dn: olcDatabase={}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" write by anonymous auth by self write by * none
olcAccess: {}to dn.base="" by * read
olcAccess: {}to * by dn="cn=Manager,dc=yinzhengjie,dc=org,dc=cn" write by * read
[root@node202.yinzhengjie.org.cn ~]#   olcAccess即access,该key用于指定目录的ACL即谁有什么权限可以存取什么
  olcRootDN设定管理员root用户的distingush name
  注意替换上面文件内容中cn为具体的域信息
  olcRootPW用上面新生成的密码替换

3>.使用咱们上一步自定义的ldif配置文件,写入ldap服务器

[root@node202.yinzhengjie.org.cn ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f domain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
modifying entry "olcDatabase={1}monitor,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" modifying entry "olcDatabase={2}hdb,cn=config" [root@node202.yinzhengjie.org.cn ~]#

八.添加基本目录

1>.自定义LDAP配置属性

[root@node202.yinzhengjie.org.cn ~]# cat basedomain.ldif
dn: dc=yinzhengjie,dc=org,dc=cn
objectClass: top
objectClass: dcObject
objectclass: organization
o: yinzhengjie org cn
dc: yinzhengjie dn: cn=Manager,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalRole
cn: Manager
description: Directory Manager dn: ou=People,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: People dn: ou=Group,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: Group
[root@node202.yinzhengjie.org.cn ~]#

2>.使用咱们上一步自定义的ldif配置文件,写入ldap服务器

[root@node202.yinzhengjie.org.cn ~]# ldapadd -x -D cn=Manager,dc=yinzhengjie,dc=org,dc=cn -W -f basedomain.ldif
Enter LDAP Password:     #密码为"ADMIN"
adding new entry "dc=yinzhengjie,dc=org,dc=cn" adding new entry "cn=Manager,dc=yinzhengjie,dc=org,dc=cn" adding new entry "ou=People,dc=yinzhengjie,dc=org,dc=cn" adding new entry "ou=Group,dc=yinzhengjie,dc=org,dc=cn" [root@node202.yinzhengjie.org.cn ~]#

3>.测试是否成功

[root@node202.yinzhengjie.org.cn ~]# ldapsearch -LLL -W -x -D "cn=Manager,dc=yinzhengjie,dc=org,dc=cn" -H ldap://localhost -b "dc=yinzhengjie,dc=org,dc=cn"
Enter LDAP Password:   #密码为"ADMIN"
dn: dc=yinzhengjie,dc=org,dc=cn
objectClass: top
objectClass: dcObject
objectClass: organization
o: yinzhengjie org cn
dc: yinzhengjie dn: cn=Manager,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalRole
cn: Manager
description: Directory Manager dn: ou=People,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: People dn: ou=Group,dc=yinzhengjie,dc=org,dc=cn
objectClass: organizationalUnit
ou: Group [root@node202.yinzhengjie.org.cn ~]#

九.LDAP基本使用

  可以使用ldapadmin作为LDAP的图形管理工具,下载地址:http://www.ldapadmin.org/download/ldapadmin.html

快速部署ldap服务

  参考链接:https://blog.frognew.com/2017/05/openldap-install-notes.html#ldapadmin。