Linux系统快速实现基于LDAP协议目录服务

2016-02-20 13:24 6 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享Linux系统快速实现基于LDAP协议目录服务的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - Linux教程 】

如果需要开发一种提供公共信息查询的系统,如通过用户姓名能够获得该用户的邮件地址、家庭住址等信息,如Yahoo提供的People search服务和Windows Outlook中提供的消息簿功能。

一般的设计方法可能是采用基于WEB的数据库设计方式,即前端使用浏览器而后端使用WEB服务器加上关系数据库。后端在Windows的典型实现可能是Windows NT + IIS + Acess数据库或者是SQL服务器,IIS和数据库之间通过ASP技术使用ODBC进行连接,达到通过填写表单查询数据的功能;后端在Linux系统的典型实现可能是Linux + Apache + Postgresql,Apache和数据库之间通过PHP3提供的函数进行连接。使用上述方法的缺点是后端关系数据库的引入导致系统整体的性能降低和系统的管理比较繁琐,因为需要不断的进行数据类型的验证和事务的完整性的确认;并且前端用户对数据的控制不够灵活,用户权限的设置一般只能是设置在表一级而不是设置在记录一级。

目录服务的推出主要是解决上述数据库中存在的问题。目录与关系数据库相似,是指具有描述性的基于属性的记录集合,但它的数据类型主要是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax),而不是关系数据库提供的整数、浮点数、日期、货币等类型,同样也不提供象关系数据库中普遍包含的大量的函数,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。

LDAP(Lightweight Directory Acess Protocol)是目录服务在TCP/IP上的实现(RFC 1777 V2版和RFC 2251 V3版)。它是对X500的目录协议的移植,但是简化了实现方法,所以称为轻量级的目录服务。在LDAP中目录是按照树型结构组织,目录由条目(Entry)组成,条目相当于关系数据库中表的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute)集合,DN相当于关系数据库表中的关键字(Primary Key);属性由类型(Type)和多个值(Values)组成,相当于关系数据库中的域(Field)由域名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。LDAP协议集还规定了DN的命名方法、存取控制方法、搜索格式、复制方法、URL格式、开发接口等。

Linux支持的LDAP服务器一般有Michigan大学开发的免费软件包和Openldap组织基于Michigan大学的开发包提供的Openldap免费软件发行包,其中Openldap发行包安装配置更加简单。RedHat 6.1 Linux发行版中就包含了Openldap软件包,该发行版可从计算机世界报信息服务中心得到,对LDAP的支持是Redhat6.1提供的一个重要扩展,(参见Redhat 6.1产品介绍),以下详细介绍在Linux中安装并配置Openldap的方法,以及使用该软件包为Windows Outlook中的帐号提供消息簿的后端。

1.安装Openldap-1.2.7-2.rpm软件包

如果不是使用的RedHat 6.1直接进行系统安装,可以单独使用管理器rpm进行独立安装,其格式为:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

       rpm - i openldap-1.2.7-2.rpm        rpm - i openldap-devel-1.2.7-2.rpm
  
2.相关文件

安装完毕后,相应的执行文件主要有:

/usr/sbin/slapd是单独运行的LDAP看守进程,它监听客户端请求,端口号一般是389。

/usr/sbin/slurpd是单独运行的LDAP更新和复制进程,它能够把本地数据库的变化通知相关服务器进行更新。

/usr/sbin/ldifldbm、/usr/sbin/ldbmcat等将LDIF(LDAP Directory Interchange Format)文件(实际是纯文本形式的文件)转化为gdbm形式的二进制数据文件以及相关的工具。

/usr/bin/ldapsearch、/usr/bin/ldapdelete、/usr/bin/ldapmodify、/usr/bin/ud等是LDAP的客户端软件,能够完成对目录的搜索、添加、修改、删除等功能。

生成的配置文件在/etc/openldap目录下,主要的配置文件有:

slapd.conf是slapd和slurpd的配置文件,其一般形式如下:

  defaultaccess read      access to attr=userpassword by self write by * compare      access to attr=mail by self write by * read       include /etc/openldap/slapd.at.conf      include /etc/openldap/slapd.oc.conf      schemacheck off      #referral ldap://sunshine.mccc.net      pidfile /var/run/slapd.pid      argsfile /var/run/slapd.args      ########################################      # ldbm database definitions      ########################################      database ldbm      #suffix "dc=your-domain, dc=com"      #suffix "o=Your Organization Name, c=US"      suffix "o=mccc, c=US"      directory /usr/tmp      rootdn "cn=root, o=mccc, c=US"      rootpw secret      #replica host=zx.mccc.net:389      binddn="ou=people, o=mccc, c=US" bindmethod=simple
对这个配置文件的关键修改是对suffix后缀为本地的组织形式,可以按照域名的形式,也可以按照组织模式。其中的rootdn定义了本地目录树的根,rootpw即是相对于本目录树的管理员口令,缺省是使用的明文为“secret”。

其中的replica指定备份目录服务器的地址,如果是备份服务器则不需要replica配置项,而是添加udpatedn=主目录服务器的地址,同时指定referral为主目录服务器。同时,缺省的目录数据是以ldbm形式(Linux中实际gdbm格式)存放在/usr/tmp目录中。Access定义了对目录信息的访问信息,它是基于条目的,即用户自己可以通过输入自己的口令修改自己的数据,其口令存放在自己的口令域(userpassword)中。

ldap.conf是本地系统LDAP客户的缺省配置,启动slapd后可以使用客户端软件使用ldap.conf的信息作为缺省信息。根据我们的具体情况,将其修改为如下形式:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

  BASE O=mccc,C=US      HOST sunshine.mccc.net

  

3.生成目录数据

生成数据文件的方法:

编辑LDIF文件

LDIF文件是文本文件的形式,例如为Windows的消息簿提供一个目录格式可为如下形式:

     dn: o=mccc,c=US      o: mccc      objectclass: organization      dn: cn=test,o=mccc,c=US      cn: test      cn: 测试中文      mail: testmail@mccc.net      othermailbox: testmailother@mccc.com      givenname: givenname      sn: test sn      surname: surname     st: st      c: china     co: co      o: mccc     ou: ou      url: http://sunshine.mccc.net      homephone: homephone      homepostaladdress: homepostaladdress      facsimiletelephonenumber: facsimiletelephonenumber      otherfacsimiletelephonenumber: otherfacsimiletelephonenumber      officefax: officefax      mobile: mobile       otherpager: otherpager      officepager: officepager      pager: pager      info: info      title: title      telephonenumber: telephonenumber        l: location      postaladdress: postaladdress      streetaddress: streetaddress      department: department      comment: comment      postalcode: postalcode      physicaldeliveryofficename: physicaldeliveryofficename      initials: initials      conferenceinformation: conferenceinformation      labeleduri: labeleduri      manager: manager      reports: reports       objectclass: organization

  其中的:后面的值中均可以填写中文信息,使用上述格式主要是为了方便在Windows 消息簿中对照用户的信息。

来源:https://www.tulaoshi.com/n/20160220/1647774.html

延伸阅读
标签: 服务器
Linux/Unix操作系统目录结构的来历   Unix(包含Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。 举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr子目录下面还有/usr/bin,以及/usr/local/bin,也用于存放二进制程序;某些系统甚至还有/opt/bin。它们有何区别? 长久以来,我也感到很费...
标签: 电脑入门
ioctl函数主要用于控制I/O设备,可实现用户空间向内核交换数据的常用方法,那么Linux下的ioctl函数还有那些作用呢?下面图老师小编就给大家介绍下Linux下ioctl函数的具体用法。 Linux内核的概念 Linux是最受欢迎的自由电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux最早是由芬兰黑客 Linus Torvalds为尝...
标签: 服务器
如何在Linux系统上加密文件和目录   加密类型 我们主要有两种加密文件和目录的方法。一种是文件系统级别的加密,在这种加密中,你可以选择性地加密某些文件或者目录(如,/home/alice)。对我而言,这是个十分不错的方法,你不需要为了启用或者测试加密而把所有一切重新安装一遍。然而,文件系统级别的加密也有一些缺点。例如,许...
作者: Bryan Pfaffenberger, TechRepublic 在Linux的多目录命令提示符中工作是一种痛苦的事情,但以下这些利用cd和pushd切换目录的技巧有助于你节省时间和精力 。 在Linux命令提示中,用cd命令来改变当前目录。这是cd命令的一些基本用法: 改变你的根路径,键入cd,按回车键。 进入一个子目录,键入...
标签: 电脑入门
网络协议是网络上所有设备之间通信规则的集合,那么你了解Linux下的网络协议吗?下面图老师小编给大家详细介绍下Linux网络协议,以便你有更详细的了解。 Linux网络协议栈基于分层的设计思想,总共分为四层,从下往上依次是:物理层,链路层,网络层,应用层。 Linux网络协议栈其实是源于BSD的协议栈,它向上以及向下的接口以及协议栈本身...

经验教程

253

收藏

96
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部