Copyright © 2004Q?005Q?本文遵从GNU 的自由文档许可证(Free Document License)的条ƾ,Ƣ迎转蝲、修攏V散布?/p>
发布旉:2004q?4?7?/p>
最q更?2005q?8?8?/p>
Abstract
LDAP(轻量U目录服务访问协议,Lightweight Directory Access Protocol)ZX.500标准Q支持TCP/IPQ用简单方ѝ现在越来越多的|络应用pȝ都支持LDAP。OpenLDAP是LDAP的一U开源实玎ͼ本笔记基于OpenLDAP2.1.29?/p>
Table of Contents
Table of Contents
目录是一个ؓ查询、浏览和搜烦而优化的专业分布式数据库Q它成树状结构组l数据,好象Linux/Unixpȝ中的文g目录一栗目录数据库和关pL据库不同Q它有优异的L能Q但写性能差,q且没有事务处理、回滚等复杂功能Q不适于存储修改频繁的数据。所以目录天生是用来查询的,好象它的名字一栗目录服务是q录数据库和一套访问协议组成的pȝ。类g下的信息适合储存在目录中Q?/p>
企业员工和企业客户之cMh员信息;
公用证书和安全密钥;
邮g地址、网址、IP{电脑信息;
电脑配置信息?/p>
...
现在国际上的目录服务标准有两个,一个是较早的X.500标准Q一个是较新的LDAP标准?/p>
X.500是一个协议族Q由一pd的概念和协议l成Q包括:
X.501是模型定义,定义目录服务的基本模型和概念Q?/p>
X.509是认证框Ӟ定义如何处理目录服务中客户和服务器认证;
X.511是抽象服务定义,定义X.500提供的功能性服务;
X.518是分布式操作q程定义Q定义如何跨q_处理目录服务Q?/p>
X.519是协议规范,定义了X.500协议Q包括DAP(Directory Access ProtocolQ目录访问协?、DSP(Directory System ProtocolQ目录系l协?、DOP(Directory Operator ProtocolQ目录操作绑定协?、DISP(Directory Information Shadowing ProtocolQ目录信息阴影协?)Q?/p>
X.520定义属性类型要求;
X.521定义对象cdQ?/p>
X.525定义如果在目录服务器间复制内宏V?/p>
X.500标准中定义了很多内容Q包括:
定义了信息模型,定目录中信息的格式和字W集Q如何在中表示目录信息(定义对象cR属性等模式)Q?/p>
定义命名I间Q确定对信息q行的组l和引用Q如何组l和命名?目录信息树DIT和层ơ命名模型;
定义功能模型Q确定可以在信息上执行的操作Q?/p>
定义认证框架Q保证目录中信息的安全,如何实现目录中信息的授权保护-讉K控制模型Q?/p>
定义分布操作模型Q确定数据如何分布和如何对分布数据执行操作,如何全局目录树划分ؓ理域,以便理?/p>
定义客户端与服务器之间的通信的各U协议?/p>
׃X.500较复杂,且需严格늅OSI七层协议模型。造成应用开发较困难。所以开发了LDAPQ以便在INTERNET上用?/p>
LDAP协议?993q获批准Q生LDAPv1版,1997q发布最新的LDAPv3版,该版本是LDAP协议发展的一个里E碑Q它作ؓX.500的简化版提供了很多自有的Ҏ,使LDAP功能更ؓ完备Q具有更强大的生命力?/p>
LDAP也是一个协议族Q包含以下内容:
RFC 2251--LDAPv3核心协议Q定义了LDAPv3协议的基本模型和基本操作Q?/p>
RFC 2252--定义LDAPv3基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象c?以及标准的系l数据模式;
RFC 2253--定义LDAPv3中的分辩?DN)表达式;
RFC 2254--定义了LDAPv3中的qo表达式;
RFC 2255--定义LDAPv3l一资源地址的格式;
RFC 2256--定义LDAPv3中用X.500的Schema列表Q?/p>
RFC 2829--定义了LDAPv3中的认证方式Q?/p>
RFC 2830--定义了如何通过扩展使用TLS服务Q?/p>
RFC 1823--定义了C的LDAP客户端API开发接口;
RFC 2847--定义了LDAP数据导入、导出文件接口LDIF?/p>
q些协议定义了LDAP的内容,包括Q?/p>
定义了一个信息模型,定了LDAP目录中信息的格式和字W集Q如何表C目录信?定义对象cR属性、匹配规则和语法{模?Q?/p>
定义了命名空_定信息的组l方?-目录树DITQ以DN和RDN为基的命名方式,以及LDAP信息的Internet表示方式Q?/p>
定义了功能模型,定在可以在信息上执行的操作及API?/p>
定义了安全框Ӟ保证目录中信息的安全Q定义匿名、用户名/密码、SASL{多U认证方式,以及与TLSl合的通讯保护框架Q?/p>
定义分布式操作模型,Z指引方式的分布式操作框架Q?/p>
定义了LDAP扩展框架?/p>
Table of Contents
我的安装Ҏ是以源码~译的方式进行的Q以root用户q行安装。安装所需软g如下Q?/p>
具体的安装步骤如下:
׃openldap需要Berkeley DB来存放数据,所以需先安装Berkeley DB 4.2.52Q可到它的网站下载,|址见上面。运行下面的命o解压Q?/p>
# tar -zxvf db-4.2.52.tar.gz
解完压后Q会生成一个db-4.2.52目录,q行该目录下的build_unix目录。执行以下命令进行配|安装?/p>
# ../dist/configure # make # make install
也是按linux源码安装的三步曲完成Q没有什么好说的了。该软g默认是安装在/usr/local/BerkeleyDB.4.2目录下。安装完成后Q要?usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf文g内,d完成后执行一ơldconfigQ配置文g生效。这L译openldap时才能找到相应的库文件。这栯料库安装完成了Q接下来可以安装openldap了。ld.so.conf是什么东西?它就是系l动态链接库的配|文件。此文g?存放着可被LINUX׃n的动态链接库所在目录的名字(pȝ目录/lib,/usr/lib除外)Q各个目录名间以I白字符(I格Q换行等)或冒h逗号分隔。一般的LINUX发行版中Q此文g均含一个共享目?usr/X11R6/libQؓX windowH口pȝ的动态链接库所在的目录?ldconfig是它的管理命令,具体操作Ҏ可查询man手册Q这里就不细讲了?/p>
到openldap官方|站下蝲最新的E_版源码,q解压。查看INSTALLT 和README文Q这个很重要Q因为安装方法和一些注意事w在里面有介绍。认真弄明白文内容能节省你不少的安装调试时间。这也是开源Y件的一个特点,l用h供了最大的灉|性和可配|性。但也增加了pȝ安装配置的难度,需要有相关的文档配|说明和指导。在官方|站上还有详l的帮助文gQ在整个pȝ配置中需要经常查询?/p>
# tar -zxvf openldap-stable-20040329.tgz
解压完成后,会生成一个openldap-2.1.29目录。进行该目录Q执行以下命令进行配|安装?/p>
# env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap --enable-ldbm
注意以上配置语句Q要讄资料库的include和lib路径Q否则在配置到资料库相关内容时会提示Berkeley DB版本不兼容,q中断配|。如果没?-enable-ldbm选项Q在make test时会提示ldbm找不到。ؓ了减出错,q是加上为好?/p>
#make depens #make #make test
在make test阶段要花费较长时间进行测试,好像?6吧。你可以放松一下,上上|,聊聊天,听听歌,呵呵Q开玩笑了,q个旉应该是最紧张的了。成与不成就看这下的了,如果没问题就可安装了?/p>
#make install
通过配置命o可以看出Q我们把openldap安装?usr/local/openldap目录下。徏议以源码安装的Y仉攑ֈ独立的目录下Q不要放到Y仉认的目录。好处是方便理和控Ӟ所有文件在l一的目录下Q卸载Y件只要删除整个目录就可以了?/p>
安装完相兌Y件后可以着手配|了。Berkeley DB资料库没什么好配置的。主要是配置openldap 服务。配|文件在软g的安装目录的etc/openldap下,有四个文Ӟ主要的是slapd.conf and ldap.confQ其它两个是backup文g。首先,我们先来配置slapd.conf文。系l默认的slapd.conf文g如下Q?/p>
# $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 #讄使用的资料库Q也可用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 #讄理密码Q这里用了明文的“secret”密码。这栯|不安全Q需使用加密的密码,下面会讲到如何设|加密密码? # 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 #讄目录烦?
要服务器正常动作Q要修改一些始初参数和讄Q修改后的配|文如下:
# $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. # #Z有效使用目录服务Q包含相关的文g。注意,在包含文件时是要按一定顺序的Q因? #文g里的属性存在依赖关pR如果顺序不对,服务器启动不了,文间的依赖关系在文? #中都有说明,请仔l查看一下。如果懒得看也可以按我的序? 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配置文gQ在文g中增加一:local4.* /var/log/ldap.log日志U别定义可查相官方网站的文? #1U记录的信息很多Q可用于调试? # 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" #Ҏ你自已的目录后缀Q? rootdn "cn=root,dc=it,dc=com" #讄root为管理员Q与linux的root没有什么关pR? # 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密码Q用MD5加密。密码串用slappasswd -h {MD5}指o生成 # 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 #q里可根据你的需要设|相关烦引,以加快查询速度。具体内容可查询官方|站理手册? #ACL configure以下内容定义讉K控制 access to attr=userPassworduserPassword #只能p已修改,有效验证用户查询? by self write by anonymous auth access to attr=mail by dn="cn=root,dc=it,dc=tigerhead" writemail #只能p已修改,有效验证用户查询? by self write by anonymous auth access to dn=".*,dc=it,dc=tigerhead" #允许所有h查询没受控制讉K限制的信息? by self write by * read
到现在ؓ止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapdE序。注意,不是sldap哦。okQ到现在为止Q服务器基本配|完成了Q可以启动了Q服务器E序是位于安装目录的libexec下的slapdE序。注意,不是sldap哦。启动服务器执行以下命oQ?/p>
# ./slapd
如果没有提示什么出错信息,直接q回shell状态,p明服务器正常启动了,你可以查询日志或用ps -aux查看。或用以下命令查询服务器:
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
如果命o执行成功Q返回一些信息,则说明服务器正常q行了。如果启动不成功Q它会提CZ些出错信息,多数是slapd.conf配置出错。回头仔l核查一下配|文?/p>
客户端配|文是ldap.conf。该文相当单,其实不用配置也能正常操作?/p>
# $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讄目录L #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 #SIZELIMIT 12 #TIMELIMIT 15 #DEREF never
服务器正常运作后Q就可以录入信息了。信息的录入有三U方法,一U是手工录入Q一U是.ldif文g格式录入Q一U是脚本自动录入。我们先从最基础的手工录入方式开始介l,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很Ҏ明白。信息录入用到ldapaddq个E序。可在安装目录的bin目录下找到?/p>
W一步是要徏立DNQ?/p>
# 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 注意Q如果你用复?_脓功能把以上内Ҏ贝过去,一定要注意每行后面不要有空|q是手工输入Q按Ctrl+d存盘?
W二步是建立RDN:
# ldapadd -x -D 'cn=root,dc=it,dc=com' -W #-x表示用简单验证,-D表示指定目录Q?W表示弹出密码输入提示
输入密码Q这里的密码是在配置文g中rootpw设|的密码Q不是操作系l中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
输入完所有信息后Q按Ctrl+dl束存盘。如果出现出错信息,h一下对象类和属性的对应关系有没有错或输入失误。初学者就Ҏ出错的地Ҏ对象cd属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这LQ对象类中有些属性是必选的Q有些属性是可选的。录入信息的属性必d对象cM有定义才能用?/p>
输入以下命o可查询到刚才输入的信息?/p>
# ldapsearch -x -b 'dc=it,dc=com' -b选项是设|目录v点,如果讄了客L的BASE配置参数Q该可不用?
如果按以上配|文件设|了aclQ用上面的查询命令是查询不到受保护的内容的。如上面的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文g方式也就是把以上手工输入的内容先写入一?ldif文g中,然后Q用ldapadd命o?f参数导入?/p>
# ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif
一个完整的global.ldif文g例子Q?/p>
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命o来导入数据。该命o可以导入包含一些系l信息的ldif文gQ如Q?/p>
dn: dc=it,dc=com objectClass: top objectClass: dcObject objectClass: organization dc: it structuralObjectClass: organization entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12 creatorsName: cn=anonymous #pȝ信息 createTimestamp: 20041201005115Z #pȝ信息 o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4 userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0= entryCSN: 2004120603:50:08Z#0x0001#0#0000 #pȝ信息 modifiersName: cn=admin,dc=it,dc=com #pȝ信息 modifyTimestamp: 20041206035008Z #pȝ信息
![]() |
|
再次提醒Q注意每行后面不要留有空根{?/td> |
接着为大家介l一下几个常用的ldap命oQ如果你用了phpLDAPadminE序Q其实它已经有一个很好的囑Ş介面帮你完成q些命o了。但了解一下还是对你还是很有益的,因ؓ命oҎ才是最Ҏ的?/p>
删除命oldapdelete
# ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'
重新索引ldap数据库命令slapindex
# slapindex -f slapd.conf
讄使用者密码,当然了,你的用户需要有userPassword了?/p>
#ldappasswd -x -D "cn=root,dc=it,dc=com" -W "uid=qq1,dc=it,dc=com" -S New password: Re-enter new password: Enter bind password: Result: Success (0)
![]() |
|
"Enter bind password" ?"cn=root,dc=it,dc=com"理员的密码?/td> |
理员密码更?
#slappasswd New password Re-enter new password {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs
接下再拷贝到 path/to/sldap.conf ?rootpw 卛_,重启使用配置文g生效
通过ldapmodify修改目录内容
# ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
通过ldif文g修改ldap数据Qldif文g格式如下Q?/p>
dn: cn=qq,dc=it,dc=com changetype: modify replace: mail mail: modme@example.com - add: title title: Grand Poobah - add: jpegPhoto jpegPhoto:< file:///tmp/modme.jpeg - delete: description -
前提是你在系l中安装了sasl认证库,q在~译openldap时支持它Q默认就支持了。到http://asg.web.cmu.edu/cyrus下蝲。安装方法见我写的sendmail安装W记。安装好之后Q需要在sasl中徏立相应的帐号Q用以下命o可完成?/p>
# saslpasswd2 -c test
接着配置slapd.conf文gQ加入以下内宏V?/p>
sasl-regexp uid=(.*),cn=.*,cn=auth uid=$1,dc=it,dc=com
重启服务器配置文g生效。这个配|是最大权限的配置Q如果要l化h阅相x档。用以下命o试?/p>
# ldapsearch -U qq -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5
采用digest-md5验证,提示密码Q输入saslpasswd2的密码?/p>
在一些关键的应用场合Q我们要求LDAP服务器能提供24时不间断的服务。当一台服务器出现故障或被黑客dӞ我们p很快地切换到另一台备份ldap服务器,l箋保持应用的正常运行。在openldap中有一个slurpdq程Q利用slurpdq程可帮助我们实C/从结构的ldap服务器。我们可讄一Cldap服务器,多台从ldap服务器,q保持这lldap服务器的数据同步。用时Q还需配置DNS服务器,把DNS服务器设|成一个域名对应你的多个ldap服务器的IP地址Q就可支持ldap服务器的不间断连l运行。下面简单介l一下主、从ldap服务器的配置?/p>
slurpdq行在主服务器上Q它能把L务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到L务器上,也就是说是单向同步的。主从服务器的版本最好一P以减兼Ҏ问题。主从服务器的安装方法是一LQ关键是配置文g有所不同。我的操作系l是debian sargeQ在保M服务器能正常q行的前提下q行以下配置Q?/p>
首先Q把M服务器关闭。通过以下三步操作静态同步主从服务器上的数据Q?/p>
把主服务器上/var/lib/ldap目录下的所有数据库文g全部拯C服务器的同目录中Q覆盖原有文件?/p>
把主服务器上?etc/ldap/schema目录下的所有schema文g拯C服务器的同目录中Q覆盖原有文件?/p>
把主服务器上/etc/ldap/slapd.conf文g拯C服务器的同目录中Q覆盖原有文件?/p>
配置L务器上的slapd.conf文gQ取消replogfile指o前的注释W号Q取消后的结果如下:
# Where to store the replica logs for database #1 replogfile /var/lib/ldap/replog
增加replica指oQ如Q?/p>
#replace config replica uri=ldap://192.168.6.195:389 #指定从服务器L名和端口? binddn="cn=admin,dc=com" #指定需同步的DN的管理员 bindmethod=simple credentials=1 #指定验证方式和需同步的DN的管理员密码
配置从服务器上的slapd.conf文gQ增加updatedn指oQ如Q?/p>
updatedn "cn=admin,dc=com" #与主服务器的binddn对应
在从服务器的配置文g中,不要包含replica和replogfile指o?/p>
先启动主服务器的slapd和slurpdQ再启动从服务器的slapd?/p>
配置完成后,我们可测试一下,在主服务器上修改一个目录项Q在从服务器上可查看目录的数据已同步?/p>
Table of Contents
开源的目录服务理工具有很多,包括phpldapadminQgqQCPUQJXplore{。这些工具可帮助我们方便l护目录服务器上的数据。这些工具各有优~点Q下面简要介l一下,详细的内容可参考相关的官方|站?/p>
止整个服务器的匿名讉K
在slapd.conf配置文g中加入disallow bind_anon卛_?/p>
控制日志信息的输?/p>
在slapd.conf文gQloglevel选项控制着日志输出信息的别。slapd服务的日志信息会记录在syslogd的LOG_LOCAL4中,我们可以为slapd专门生成一个日志文件。把以下内容d到syslog.conf文g中再使syslogdq程重新d配置文g卛_?/p>
local4.debug /var/log/slapd.log
使syslogdq程重新d配置文gQ请用你机器上真实的syslogdq程的id代替下面的syslogd_pid?/p>
debian:~# kill -HUP syslogd_pid
有所不同。关pL据库是有一张一张的二维表格来存放数据的。ldapcM我们的dnspȝQ是树状的。用
节点来存放数据。当然一个树枝可以有n个节点,每个节点上存攄数据Q都是以key => value的Ş式?/p>
像我们的dnspȝ?br /> 我们在安装openLdap的时候,在slapd.conf文g里会包括q一些schemaQ那么schema起什么作用呢Q?/p>
schemacM关系数据库的字段说明Q包括字D名Q数据类型,数据长度{等
如何向数据库d数据。ldap不支持sqlQ所以要用ldapaddq个E序来添加,d的时候要用一个ldif?/p>
Ӟ把要d的东西写在里面,ldif的格式在admin guide里面有说明,我在q里只是要说一下?br />
5. Attribute Types
(LDAP服务器的实现应该可以识别下面列出的属性类?
5.1. objectClass
objectClass属性存在于L实体中,q且臛_包含两个属性|其中的一个值必Ltop
或者alias?br />
5.2. aliasedObjectName
如果包含q个属性的实体是alias的话Q那么目录服务就使用aliasedObjectName?br />
5.3. knowledgeInformation
q个属性已l不再用?br />
5.4. cn
cn是X.500U的commonName属性。包含一个对象的名字Q如果对象是person的时候,cnl常代表用户?/p>
全名?/p>
5.6. serialNumber
serialNumber包含一个设备的序列受?br />
5.7. c
c包含一个两位数字的ISO国家代码(countryName)
5.8. l
l属性包含了地区的名Uͼ例如城市Q乡镇或者其他的地理区域(localityName)
5.9. st
st属性包含了州或者省的全?stateOrProvinceName)
5.10. street
street属性包含实体对应的对象的物理地址Q例如包裹的邮寄地址?streetAddress)
5.11. o
o属性包含了l织的名字?organizationName)
5.12. ou
ou属性包含了l织单元的名U?organizationalUnitName)
5.13. title
title属性包含了person在组l环境中的头衔,例如”Vice President”QpersonTitle属性将在作?/p>
person的头衔独立于他们的工作范畴?br />
5.14. description
description属性包含了对对象的一个human-readable描述?/p>
5.15. searchGuide
searchGuide属性是由X.500客户端用来构造检索过滤器的。它由enhancedSearchGuide属性代替了?br />
5.16. businessCategory
businessCategory属性描qC一个组l的商业cd?br />
5.17. postalAddress
邮寄地址属性?br />
5.18. postalCode
邮政~码属?br />
5.19. postOfficeBox
邮箱属?br />
5.21. telephoneNumber
电话L属?br />
5.22. telexNumber
甉|L属?br />
5.23. teletexTerminalIdentifier
甉|l端标识W?br />
5.24. facsimileTelephoneNumber
传真机号码?br />
5.27. registeredAddress
registeredAddress属性包含一个收件h的邮寄地址Q必M收g人接受传递?br />
5.28. destinationIndicator
destinationIndicator属性用来用电报服务?/p>
5.31. supportedApplicationContext
This attribute contains the identifiers of OSI application contexts.
supportedApplicationContext属性包含了OSI应用E序标识W?br />
5.32. member
( 2.5.4.31 NAME ''member'' SUP distinguishedName )
5.33. owner
( 2.5.4.32 NAME ''owner'' SUP distinguishedName )
5.34. roleOccupant
( 2.5.4.33 NAME ''roleOccupant'' SUP distinguishedName )
5.35. seeAlso
( 2.5.4.34 NAME ''seeAlso'' SUP distinguishedName )
5.36. userPassword
密码使用8位字节的字符串进行明文存储?/p>
5.37. userCertificate
userCertificate属性通过二进制方式存储和hQ例?#8221;userCertificate;binary”.
5.38. cACertificate
cACertificate属性通过二进制方式存储和hQ例?#8221;cACertificate;binary”.
5.39. authorityRevocationList.
authorityRevocationList属性通过二进制方式存储和hQ例? authorityRevocationList;binary”.
5.43. givenName
givenName属性用来表Cperson的部分名字,既不是surname也不是middlename?br />
5.44. initials
initials属性包含了一个h的名字中的一些或者全部首字母Q但不是surname(s)?br />
5.48. enhancedSearchGuide
enhancedSearchGuide属性由X.500客户端用来构造检索过滤器?/p>
5.51. uniqueMember
唯一的成员?br />
5.53. supportedAlgorithms
supportedAlgorithms属性包含了支持的算法?br />
7. Object Classes
LDAP服务器必能够识别top和subschemaq两个object class。LDAP服务器应该可以识别其他的object class?/p>