- 浏览: 187042 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
Errorize:
一个用servlet实现导出csv文件的实例 -
wendellhu:
求monkey talk应用文档的解压密码
monkey talk应用文档 -
wendellhu:
加密的?
monkey talk应用文档 -
hugang357:
hslh22 写道不错的资源,可以使用,只是没有最大最小值的限 ...
数字微调输入框 -
hslh22:
不错的资源,可以使用,只是没有最大最小值的限制,需要自己去加逻 ...
数字微调输入框
简介
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。 简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大。
安装
1.由于openldap需要Berkeley DB来存放数据,所以需先安装Berkeley DB 4.2.52,可到它的网站下载,网址见上面。运行下面的命令解压:
# tar -zxvf db-4.2.52.tar.gz 解完压后,会生成一个db-4.2.52目录,进行该目录下的build_unix目录。执行以下命令进行配置安装。 # ../dist/configure # make # make install
也是按linux源码安装的三步曲完成,没有什么好说的了。该软件默认是安装在/usr/local/BerkeleyDB.4.2目录下。安装完成后,要把/usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf文件内,添加完成后执行一次ldconfig,使配置文件生效。这样编译openldap时才能找到相应的库文件。这样资料库就安装完成了,接下来可以安装openldap了。 ld.so.conf是什么东西?它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib, /usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。一般的LINUX发行版中,此文件均含一个共享目录 /usr/X11R6/lib,为X window窗口系统的动态链接库所在的目录。 ldconfig是它的管理命令,具体操作方法可查询man手册,这里就不细讲了。
2. 到openldap官方网站下载最新的稳定版源码,并解压。查看INSTALLT 和README文档,这个很重要,因为安装方法和一些注意事项都在里面有介绍。认真弄明白文档内容能节省你不少的安装调试时间。这也是开源软件的一个特点,给用户提供了最大的灵活性和可配置性。但也增加了系统安装配置的难度,需要有相关的文档配置说明和指导。在官方网站上还有详细的帮助文件,在整个系统配置中需要经常查询。
# tar -zxvf openldap-stable-20040329.tgz 解压完成后,会生成一个openldap-2.1.29目录。进行该目录,执行以下命令进行配置安装。 # env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap --enable-ldbm
注意以上配置语句,要设置资料库的include和lib路径,否则在配置到资料库相关内容时会提示Berkeley DB版本不兼容,并中断配置。如果没有–enable-ldbm选项,在make test时会提示ldbm找不到。为了减少出错,还是加上为好。
#make depens #make #make test
在make test阶段要花费较长时间进行测试,好像有16项吧。你可以放松一下,上上网,聊聊天,听听歌,呵呵,开玩笑了,这个时间应该是最紧张的了。成与不成就看这下的了,如果没问题就可安装了。
#make install
通过配置命令可以看出,我们把openldap安装到/usr/local/openldap目录下。建议以源码安装的软件都放到独立的目录下,不要放到软件默认的目录。好处是方便管理和控制,所有文件在统一的目录下,卸载软件只要删除整个目录就可以了。
3.安装完相关软件后就可以着手配置了。Berkeley DB资料库没什么好配置的。主要是配置openldap 服务。配置文件在软件的安装目录的etc/openldap下,有四个文件,主要的是slapd.conf and ldap.conf,其它两个是backup文件。首先,我们先来配置slapd.conf文档。系统默认的slapd.conf文件如下:
# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $ # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /usr/local/openldap/etc/openldap/schema/core.schema #设置schema配置文档包含 # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /usr/local/openldap/var/slapd.pid #设置pid和args文档位置 argsfile /usr/local/openldap/var/slapd.args # Load dynamic backend modules: # modulepath /usr/local/openldap/libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy is: # Allow read by all # # rootdn can always write! ####################################################################### # ldbm database definitions ####################################################################### database bdb #设置使用的资料库,也可用lbdm。 suffix "dc=my-domain,dc=com" #设置目录后缀 rootdn "cn=Manager,dc=my-domain,dc=com" #设置目录管理员 # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret #设置管理密码,这里用了明文的“secret”密码。这样设置不安全,需使用加密的密码,下面会讲到如何设置加密密码。 # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/openldap/var/openldap-data #设置资料库路径 # Indices to maintain index objectClass eq #设置目录项索引
要服务器正常动作,要修改一些始初参数和设置,修改后的配置文档如下:
# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $ # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # #为了有效使用目录服务,包含相关的文件。注意,在包含文件时是要按一定顺序的,因为 #文件里的属性存在依赖关系。如果顺序不对,服务器启动不了,文档间的依赖关系在文档 #中都有说明,请仔细查看一下。如果懒得看也可以按我的顺序。 include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/corba.schema include /usr/local/openldap/etc/openldap/schema/cosine.schema include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema include /usr/local/openldap/etc/openldap/schema/misc.schema include /usr/local/openldap/etc/openldap/schema/openldap.schema include /usr/local/openldap/etc/openldap/schema/nis.schema include /usr/local/openldap/etc/openldap/schema/samba.schema # Define global ACLs to disable default read access. # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /usr/local/openldap/var/slapd.pid argsfile /usr/local/openldap/var/slapd.args loglevel 1 #增加了日志功能,需修改syslog配置文件,在文件中增加一项:local4.* /var/log/ldap.log日志级别定义可查相官方网站的文档。 #1级记录的信息很多,可用于调试。 # Load dynamic backend modules: # modulepath /usr/local/openldap/libexec/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy is: # Allow read by all # # rootdn can always write! ####################################################################### # ldbm database definitions ####################################################################### database bdb suffix "dc=it,dc=com" #改成你自已的目录后缀, rootdn "cn=root,dc=it,dc=com" #设置root为管理员,与linux的root没有什么关系。 # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw {MD5}mjkiuPt0wXhpxxkdiOOO+0000000AKq0by #设置root密码,用MD5加密。密码串用slappasswd -h {MD5}指令生成 # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/openldap/var/openldap-data # Indices to maintain index objectClass eq #这里可根据你的需要设置相关索引,以加快查询速度。具体内容可查询官方网站管理手册。 #ACL configure以下内容定义访问控制 access to attr=userPassworduserPassword #只能由自已修改,有效验证用户查询。 by self write by anonymous auth access to attr=mail by dn="cn=root,dc=it,dc=tigerhead" writemail #只能由自已修改,有效验证用户查询。 by self write by anonymous auth access to dn=".*,dc=it,dc=tigerhead" #允许所有人查询没受控制访问限制的信息。 by self write by * read
到现在为止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapd程序。注意,不是 sldap哦。ok,到现在为止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapd程序。注意,不是 sldap哦。启动服务器执行以下命令:
# ./slapd
如果没有提示什么出错信息,直接返回shell状态,就说明服务器正常启动了,你可以查询日志或用ps -aux查看。或用以下命令查询服务器:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
如果命令执行成功,返回一些信息,则说明服务器正常运行了。如果启动不成功,它会提示一些出错信息,多数是slapd.conf配置出错。回头仔细核查一下配置文档。
4.客户端配置文档是ldap.conf。该文档相当简单,其实不用配置也能正常操作。
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $ # # LDAP Defaults # # See ldap.conf(5) for details # This file should be world readable but not world writable. BASE dc=it, dc=com设置目录起点 #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never
数据录入
服务器正常运作后,就可以录入信息了。信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是脚本自动录入。我们先从最基础的手工录入方式开始介绍,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很容易明白。信息录入用到ldapadd这个程序。可在安装目录的bin目录下找到。
手动录入方法
第一步是要建立DN:
# ldapadd -x -D 'cn=root,dc=it,dc=com' -W dn: dc=it,dc=com objectClass: dcObject objectClass: organization dc: it o: Corporation description: d Corporation
注意:如果你用复制/粘贴功能把以上内容拷贝过去,一定要注意每行后面不要有空格,建议还是手工输入,按Ctrl+d存盘。
第二步是建立RDN:
# ldapadd -x -D 'cn=root,dc=it,dc=com' -W #-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示
输入密码,这里的密码是在配置文件中rootpw项设置的密码,不是操作系统中root用户的密码。验证通过后就可输入以下内容:
dn: uid=qq,dc=it,dc=com objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson uid: qq cn: qq sn: qq telephoneNumber: 138888888 description: openldap test telexNumber: tex-8888888 street: my street postOfficeBox: postofficebox displayName: qqdisplay homePhone: home1111111 mobile: mobile99999 mail:qq@qq.com
输入完所有信息后,按Ctrl+d结束存盘。如果出现出错信息,请查一下对象类和属性的对应关系有没有错或输入失误。初学者就容易出错的地方是对象类和属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。
输入以下命令可查询到刚才输入的信息。
# ldapsearch -x -b 'dc=it,dc=com' -b选项是设置目录起点,如果设置了客户端的BASE配置参数,该项可不用。
如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:
# ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq' 接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。
文件方式
.ldif文件方式也就是把以上手工输入的内容先写入一个.ldif文件中,然后,用ldapadd命令的-f参数导入。
# ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif
一个完整的global.ldif文件例子:
dn: dc=info, dc=net objectClass: top objectClass: organization o: info.net
dn: ou=People, dc=info, dc=net objectClass: top objectClass: organizationalUnit ou: People description: User Info
dn: cn=Admin, dc=info, dc=net objectClass: top objectClass: person objectClass: organizationalPerson cn: Admin sn: Admin userPassword: Admin description: Administrator for info.net
dn: id=1, ou=People, dc=info, dc=net objectclass: top objectclass: InfoPerson id: 1 username: 张三 tel:021-63138990 card_id:ABC001
我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:
dn: dc=it,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: it structuralObjectClass: organization entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12 creatorsName: cn=anonymous #系统信息 createTimestamp: 20041201005115Z #系统信息 o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4 userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0= entryCSN: 2004120603:50:08Z#0x0001#0#0000 #系统信息 modifiersName: cn=admin,dc=it,dc=com #系统信息 modifyTimestamp: 20041206035008Z #系统信息
[Note] 再次提醒,注意每行后面不要留有空格。
脚本方式
脚本录入方式需要自已编写脚本,或到网上下载。有一个用PHP写的LDAP管理工具不错,叫phpLDAPadmin。可以到以下网址下载:http://phpldapadmin.sourceforge.net。安装方法也很简单,只要解压出来,拷贝到apache的web目录下,按说明配置一下设定文档,就ok了。
发表评论
-
12hh
2013-06-07 09:35 777fdgtg -
百度只剩1
2012-03-22 00:10 0附件 -
Timer与TimerTask入门
2011-05-24 22:52 854Java2的开发包中提供了 ... -
Timer与TimerTask实例
2011-05-24 22:51 1380今天看了一下Timer与TimerTask的用法并且在网上 ... -
web应用每晚12点定时执行程序代码实例
2011-05-24 22:50 20701、当前web应用的web.xml文件配置容器监听类com ... -
Tomcat java 定时任务
2011-05-24 22:49 1207如何在Web工程中实现任 ... -
Java定时器在Web中的应用
2011-05-24 22:46 933本文实例的最终功能是每天某个时间点(如每晚22点)执行某一功能 ... -
java 导出成.csv文件的乱码问题
2011-05-19 23:54 2574已经解决因为所有页面都是用UTF-8的编码方式。本以为这 ... -
一个用servlet实现导出csv文件的实例
2011-05-19 23:49 3234Java采用反射导出CSV文件替代导出Excel p ... -
Google分页的经典案例
2011-05-05 22:26 791上一页 [1][2][3][4][5][6] ... -
Google分页的经典案例
2011-05-05 22:25 9771 、创建 Page 类, pack ... -
openldap的配置手册
2011-04-27 22:44 927最近一直在安装opneldap-2 ... -
slapd.conf 配置文件中的高级功能使用方法
2011-04-27 22:42 14871. 开启日志功能启用日 ... -
OpenLDAP主配置文件slapd.conf介绍
2011-04-27 22:41 1253安全起见,slapd.conf文件应该只让运行此进程的用户可读 ... -
定制你的LDAP目录的Schema
2011-04-27 22:38 1233(http://www.infoxa.com/asp/tech ... -
ubuntu 8.04上openldap的安装和使用
2011-04-27 22:36 10531、安装openldap。$ sudo apt-get ins ... -
ubuntu上部署OpenLDAP
2011-04-27 22:34 1769原文地址:https://help.ubuntu.com/co ... -
OpenLDAP中 Schema的详细介绍
2011-04-27 22:33 3131本章讲述了如何扩展用户使用的schema。本章假设阅读者已经熟 ... -
第一个JFreeChart实例
2011-01-21 00:12 2541JFreeChart的使用非常简单,我们只需要提供满 ... -
JFreeChart简介及下载、配置
2011-01-21 00:00 1757JFreeChart简介 JFreeChart是 ...
相关推荐
OpenLDAP的源码对于开发者和系统管理员来说具有极高的学习价值,因为它可以帮助他们理解LDAP的工作原理,定制自己的LDAP服务器,或者进行二次开发。 在Linux环境下,OpenLDAP源码的构建和安装过程涉及以下几个关键...
- `/etc/openldap/slapd.conf`: OpenLDAP 的主配置文件, 记录根域信息、管理员名称、密码、日志及权限等。 - `/etc/openldap/slapd.d/*`: 此目录下的文件是根据 `/etc/openldap/slapd.conf` 配置信息生成的, 每次...
### OpenLDAP技术详解与管理指南 #### 一、OpenLDAP简介及目录服务概念 ##### 1.1 什么是目录服务? 目录服务是一种用于存储、管理和检索数据的服务,它以树形结构来组织信息,便于查询和维护。在企业环境中,...
**OpenLDAP 2.4.10 for Windows 32位详解** OpenLDAP是一个开源的、实现 Lightweight Directory Access Protocol (LDAP) 的服务器软件。 LDAP,轻量级目录访问协议,是一种用于存储和检索分布式目录信息的标准协议...
在企业环境中,OpenLDAP 可以提供用户认证服务、权限管理等功能,对于大型网络环境来说,能够有效提高系统管理效率。 #### 二、安装准备 在 CentOS 6.2 系统环境下,首先确保服务器已更新至最新状态,并安装必要的...
"基于Go+Vue实现的openLDAP后台管理项目.zip" 这个标题揭示了项目的核心技术栈,即使用Go语言作为后端开发框架,Vue.js作为前端框架,来构建一个用于管理openLDAP(开源轻量级目录访问协议)的后台系统。openLDAP是...
### LDAP与OpenLDAP详解 #### 一、引言 随着企业规模的不断扩大和技术的发展,组织内的用户管理和身份验证变得越来越复杂。LDAP(轻量级目录访问协议)作为一种开放标准的应用层协议,为解决这些问题提供了有效的...
这里我们将详细探讨schema2ldif,一个专门用于将模式转换为LDIF(Lightweight Directory Access Protocol Data Interchange Format)文件,并帮助管理OpenLDAP服务器中模式的工具。 schema2ldif是一款由Perl语言...
目录服务器是一种特殊类型的数据库,它主要用于存储和管理网络中的用户信息、资源定位和认证数据。在Linux环境中,LDAP(轻量级目录访问协议)是常见的目录服务协议,它允许快速、高效地查找和访问网络资源。LDAP以...
LDAP,全称轻量级目录访问协议(Lightweight Directory Access Protocol),是一种用于访问和管理分布式目录服务的标准网络协议。它主要用于存储和检索组织和个人的信息,如用户名、密码、联系信息、组织结构等。这...
- 在大多数Linux发行版中,可以通过包管理器(如apt或yum)安装OpenLDAP服务器。 - 对于Windows环境,则可以考虑使用第三方解决方案,如ADAM (Active Directory Application Mode) 或者安装虚拟机运行Linux环境。 ...
随着网络设备数量的不断增加,网络管理员面临着越来越复杂的用户管理挑战。为了有效地管理和保护网络资源,采用集中式的认证、授权和记账(AAA)服务变得尤为重要。RADIUS(Remote Authentication Dial-In User ...
在 CentOS 5.2 系统上,可以通过 `yum` 包管理器来安装 openldap 服务器软件。首先确保系统已经配置了网络和 `yum` 源,然后执行: ``` # yum install openldap openldap-server openldap-servers ``` 2. ...