当前位置: 首页 > news >正文

龙岗免费的网站制作广州建站业务公司

龙岗免费的网站制作,广州建站业务公司,网站建设外文文献,江西网站优化https://www.cnblogs.com/kevingrace/p/5773974.html 一、LDAP概念 LDAP是轻量目录访问协议#xff0c;英文全称是Lightweight Directory Access Protocol#xff0c;一般都简称为LDAP。它是基于X.500标准的#xff0c;但是简单多了并且可以根据需要定制。与X.500不同…https://www.cnblogs.com/kevingrace/p/5773974.html 一、LDAP概念 LDAP是轻量目录访问协议英文全称是Lightweight Directory Access Protocol一般都简称为LDAP。它是基于X.500标准的但是简单多了并且可以根据需要定制。与X.500不同LDAP支持TCP/IP这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。简单说来LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用不过根据组织者的需要它可以做得更加强大。 现在市场上有关LDAP的产品已有很多各大软件公司都在他们的产品中集成了LDAP服务如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAP它比商业产品一点也不差而且源码开放。 OpenLDAP 是最常用的目录服务之一它是一个由开源社区及志愿者开发和管理的一个开源项目提供了目录服务的所有功能包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如用户登录和身份验证所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的。  LDAP的信息模型是建立在条目entries的基础上。一个条目是一些属性的集合并且具有一个全局唯一的可区分名称DN一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称比如cn是通用名称common name 或者mail是电子邮件地址。条目的值的语法取决于属性类型。比如cn属性可能具有一个值Babs Jensen 。一个mail属性可能包含bbskevin.com 。一个jpegphoto属性可能包含一幅JPEG二进制格式的图片。 LDAP常用关键字列表 LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中它的值决定了该条目必须遵守的模式规则。 关键字英文全称含义dcDomain Component域名的部分其格式是将完整的域名分成几部分如域名为example.com变成dcexample,dccomuidUser Id 用户ID如“tom”ouOrganization Unit 组织单位类似于Linux文件系统中的子目录它是一个容器对象组织单位可以包含其他各种对象包括其他组织单元如“market”cnCommon Name 公共名称如“Thomas Johansson”snSurname  姓如“Johansson”dnDistinguished Name 惟一辨别名类似于Linux文件系统中的绝对路径每个对象都有一个惟一的名称如“uid tom,oumarket,dcexample,dccom”在一个目录树中DN总是惟一的rdnRelative dn 相对辨别名类似于文件系统中的相对路径它是与目录树结构无关的部分如“uidtom”或“cn Thomas Johansson”cCountry国家如“CN”或“US”等。oOrganization组织名如“Example, Inc.” LDAP支持的目录操作 包括查询目录、更新目录、增加条目、删除条目、改变条目名称搜索信息最常用的LDAP操作是搜索信息操作。LDAP搜索操作允许搜索目录的一部分查找匹配某个搜索过滤器规则的条目搜索在 dcexample,dccom 条目之中或者之下的整个目录子树查找一个名字叫做 Barbara Jensen 的个人并且获取每一个找到的条目的电子邮件地址。 1.1   LDAP协议简单介绍 目录是一组具有类似属性、以一定逻辑和层次组合的信息。常见的例子是通讯簿由以字母顺序排列的名字、地址和电话号码组成。 目录服务是一种在分布式环境中发现目标的方法。目录具有两个主要组成部分 第一部分是数据库数据库是分布式的且拥有一个描述数据的规划。 第二部分则是访问和处理数据的各种协议。 录服务其实也是一种数据库系统只是这种数据库是一种树形结构而不是通常使用的关系数据库。目录服务与关系数据库之间的主要区别在于二者都允许对存储数据进行访问只是目录主要用于读取其查询的效率很高而关系数据库则是为读写而设计的。温馨提示目录服务不适于进行频繁的更新属于典型的分布式结构。 LDAP是一个目录服务协议目前存在众多版本的LDAP而最常见的则是V2和V3两个版本它们分别于1995年和1997年首次发布。 1.2   LDAP的基本模型 LDAP的基本模型是建立在条目Entry的基础上。一个条目是一个或多个属性的集合并且具有一个全局唯一的可区分名称用dn表示。与关系型数据后面简称数据库进行类比一个条目相当于数据库中的一条记录而dn相当于数据库中记录的关键字属性相当于数据库中的字段。温馨提示dn必须是全局唯一的。 LDAP中将数据组织成一个树形结构这与现实生活中的很多数据结构可以对应起来而不像设计关系型数据库的表需要进行多种变化。如下图所展示的就是一个树形结构的数据。 在上图所示的树形结构中树的根结点是一个组织的域名dlw.com其下分为3个部分分别是managers、people和group可将这3个组看作组织中的3个部门如managers用来管理所有管理人员people用来管理登录系统的用户group用来管理系统中的用户组。当然在该图中还可继续增加其他分支。 对于图中所示的树形结构使用关系数据库来保存数据的话需要设置多个表一层一层分别保存当需要查找某个信息时再逐层进行查询最终得到结果。 若使用目录来保存该图中的数据则更直观。图中每个结点用一个条目来保存不同类型的结点需要保存的数据可能不同在LDAP中通过一个称为objectClass的类型来控制不同结点需要的数据称为属性。 对于目录中的数据怎样进行引用呢前面提到过每一个条目都有一个dn因为dn是唯一的因此就可找到需要结点的数据。dn的构造方式如下 首先得到条目自己的名称rdn称为相对dn然后开始向上逐级查找父结点一直到根项为止。例如对于图1-1中最右下方的结点其dn为  dn: cnldap, ougroup, odlw.com 通过这样的方式即可唯一标识每一个结点。在现实生活中有很多这种树形结构的数据如计算机文件系统的目录结构、Internet中的域名等。这些类型的数据只要不需要频繁的更新都适合用目录来保存。 LDAP主要的简称含义 o-   organization组织-公司ou- organization unit组织单元-部门c-   countryName国家dc- domainComponent域名sn- suer name真实名称cn- common name常用名称 1.3   LDAP的功能 在LDAP的功能模型中定义了一系列利用LDAP协议的操作主要包含以下4部分 查询操作允许查询目录和取得数据其查询性能比关系数据库好。更新操作目录的更新操作没关系数据库方便更新性能较差但也同样允许进行添加、删除、修改等操作。复制操作前面也提到过LDAP是一种典型的分布式结构提供复制操作可将主服务器的数据的更新复制到设置的从服务器中。认证和管理操作允许客户端在目录中识别自己并且能够控制一个会话的性质。 Ldap具体高级功能 实现账号统一集中管理权限控制策略管理密码控制策略管理密码审计管理主机控制管理同步机制管理TLS/SASL加密传输高可用负载均衡架构自定义schema各种集中平台账号集中管理 1.4   LDAP协议的特点 LDAP是一种目录服务保存在特殊的数据库中数据的读取速度远高于写入速度。LDAP对查询做了优化读取速度优于普通关系数据库。LDAP不支持事务、不能进行回滚需要进行这些操作的应用只有选择关系数据库。LDAP采用服务器/客户端模式服务器端用于存储数据客户端提供操作目录信息树的工具支持分布式结构。LDAP中的条目以树形结构组织和存储。LDAP基于Internet协议直接运行在简单和通用的TCP/IP或其他可靠的传输协议层上使连接的建立和包的处理简单、快捷对于互联网和企业网应用都很方便。LDAP协议简单通过使用查找操作实现列表操作和读操作。LDAP通过引用机制实现分布式访问通过客户端API实现分布式操作对于应用透明平衡了负载。LDAP实现具有低费用、易配置和易管理的特点并提供了满足应用程序对目录服务所需求的特性。 1.5   LDAP目录服务 目录是一个为查询、浏览和搜索而优化的专业分布式数据库它呈树状结构组织数据就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同它有优异的读性能但写性能差并且没有事务处理、回滚等复杂功能不适于存储修改频繁的数据。所以目录天生是用来查询的就好象它的名字一样。 目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中 企业员工信息如姓名、电话、邮箱等公司的物理设备信息如服务器它的IP地址、存放位置、厂商、购买时间等客户的联系信息软件包的配置信息公用证书和安全密匙 与LDAP一样提供类似的目录服务软件还有ApacheDS、Active Directory、Red Hat Directory Service 。 1.6   LDAP组织数据的方式 1.7  身份认证在LDAP中提供三种认证机制 a匿名认证即不对用户进行认证该方法仅对完全公开的方式适用 b基本认证通过用户名和密码进行身份识别又分为简单密码和MD5密码认证 [rootldap-server ~]# ldapadd -x -D cnroot,dcotas,dccn -W -f base.ldif Enter LDAP Password: 输入admin123 adding new entry dcotas,dccn adding new entry ouPeople,dcotas,dccn adding new entry ouGroup,dcotas,dccn cSASL认证即LDAP提供的在SSL和TLS安全通道基础上进行的身份认证包括数字证书的认证。 1.8  TLS安全性 分布式LDAP 是以明文的格式通过网络来发送信息的包括client访问sldap的密码。TLSSSL 的后继者由OpenSSL 包加密机制来解决这个问题。 LDAP目录数据结构 a在LDAP中目录是按照树型结构组织——目录信息树DITDIT是一个主要进行读操作的数据库 bDIT由条目Entry组成条目相当于关系数据库中表的记录条目是具有分辨名DNDistinguished Name的属性-值对Attribute-value,简称AV的集合 在目录树中怎么组织数据 cnFran Smith,ouemployees,dcfoobar,dccom                ------------ -----------------                  容器条目    BaseDN --------------------------------------------                  DN -  在UNIX文件系统中最顶层是根目录rootLDAP目录也通常用ROOT做根通常称为BaseDN。 -  因为历史X.500的原因LDAP目录用OUOrganization Unit从逻辑上把数据分开来。 Ou 也是一种条目容器条目 -  Ou 下就是真正的用户条目 什么是dn? dn即distinguished name的简称在LDAP中一个条目的分辨名叫做dndn是该条目在整个树中的唯一名称标识;dn相当于关系数据库表中的关键字Primary Key;dn是一个识别属性通常用于检索 常见的两种dn设置 1 2 3 4 [rootldap-server ~]# ldapsearch -x -LLL uidmac* dn: uidmac,ouPeople,dcotas,dccn         唯一标适 uid: mac               cn: mac 二、LDAP基本概念及其管理 启动OpenLDAP服务器程序之后接下来的操作就是通过客户端程序对目录进行操作包括添加、修改、删除和搜索数据等操作。 2.1  Entry 条目也叫记录项是LDAP中最基本的颗粒就像字典中的词条或者是数据库中的记录。通常对LDAP的添加、删除、更改、检索都是以条目为基本对象的。 dn每一个条目都有一个唯一的标识名distinguished Name DN如上图中一个 dncnbaby,oumarketing,oupeople,dcmydomain,dcorg 。通过DN的层次型语法结构可以方便地表示出条目在LDAP树中的位置通常用于检索。rdn一般指dn逗号最左边的部分如cnbaby。它与RootDN不同RootDN通常与RootPW同时出现特指管理LDAP中信息的最高权限用户。Base DNLDAP目录树的最顶部就是根也就是所谓的“Base DN如dcmydomain,dcorg。 2.2  schema 对象类ObjectClass、属性类型AttributeType、语法Syntax分别约定了条目、属性、值他们之间的关系如下图所示。所以这些构成了模式(Schema)——对象类的集合。条目数据在导入时通常需要接受模式检查它确保了目录中所有的条目数据结构都是一致的。 schema一般在/etc/ldap/schema/目录在导入时要注意前后顺序。 对于LDAP目录中保存的信息可以使用LDIFLDAP Interchange Format格式来保存。这是一种标准文本文件格式使用这种格式保存得的LDAP服务器数据库中的数据可方便读取和修改这也是其他大多数服务配置文件所采取的格式。 LDIF文件常用来向目录导入或更改记录信息这些信息需要按照LDAP中schema的格式进行组织并会接受schema的检查不符合其要求的格式将会出现报错信息。 在LDAP中schema用来指定一个目录中所包含的对象objects的类型objectClass以及每一个类型objectClass中必须提供的属性Atrribute和可选的属性。可将schema理解为面向对象程序设计中的类通过类定义一个具体的对象。LDIF中的数据条目可理解为是一个具体的对象是通过schema来规划创建的。因此schema是一个数据模型用来决定数据按什么方式存储并定义存储在不同的条目Entry下的数据之间的关系。schema需要在主配置文件slapd.conf中指定以用来决定在目录中可以使用哪些objectClass。 在/etc/openldap/schema/目录中提供了许多schema文件只需要在配置文件slapd.conf中使用include命令将需要使用的schema包含即可。例如配置文件默认包含了以下schema文件 include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema 温馨提示通常使用系统提供的schema就可解决大部分应用。管理员也可以自己设计制定schema一般包括属性定义AttributeDefinition、类定义ClassDefinition以及语法定义SyntaxDefinition等部分。这里就不介绍具体的设计方法了。 2.3   向目录数据库中添加数据 初始状态下LDAP是一个空目录即没有任何数据。可通过程序代码向目录数据库中添加数据也可使用OpenLDAP客户端工具ldapadd命令来完成添加数据的操作该命令可将一个LDIF文件中的条目添加到目录。因此需要首先创建一个LDIF文件然后再进行添加操作。 1LDIF文本条目格式 LDIFLDAP Data Interchange Format数据交换格式是LDAP数据库信息的一种文本格式用于数据的导入导出每行都是属性: 值对。 LDIF用文本格式表示目录数据库的信息以方便用户创建、阅读和修改。在LDIF文件中一个条目的基本格式如下 1 2 3 4 5 6 # 注释 dn: 条目名 属性描述: 值 属性描述: 值 属性描述: 值 ... ... dn行类似于关系数据库中一条记录的关键字不能与其他dn重复。一个LDIF文件中可以包含多个条目每个条目之间用一个空行分隔。 例如以下内容组成一个条目 1 2 3 4 5 6 1: dn: dcdlw, dccom 2: objectclass: top 3: objectclass: dcobject 4: objectclass: organization 5: dc: dlw 6: o: dlw,Inc. 在以上文本中各行含义如下 第1行的dn定义该条目的标识。第24行定义该条目的objectcCass可以定义多个属性如上面代码中定义了3个objectClass。条目的属性根据objectClass的不同而不同有的objectClass有必须设置的属性。在24行的3个objectClass中top没有必须定义的属性dcobject必须定义属性dc用来表示一个域名的部分而organization必须定义属性o用来表示一个组织的名称。根据objectClass的要求第5、6行分别定义属性dc和属性o的值。 2.4   objectClass LDAP中一个条目必须包含一个objectClass属性且需要赋予至少一个值。每一个值将用作一条LDAP条目进行数据存储的模板模板中包含了一个条目必须被赋值的属性和可选的属性。 objectClass有着严格的等级之分最顶层是top和alias。例如organizationalPerson这个objectClass就隶属于person而person又隶属于top。 objectClass可分为以下3类 结构型Structural如person和organizationUnit辅助型Auxiliary如extensibeObject抽象型Abstract如top抽象型的objectClass不能直接使用。 对象类是属性的集合LDAP预想了很多人员组织机构中常见的对象并将其封装成对象类。比如人员person含有姓sn、名cn、电话(telephoneNumber)、密码(userPassword)等属性单位职工(organizationalPerson)是人员(person)的继承类除了上述属性之外还含有职务title、邮政编码postalCode、通信地址(postalAddress)等属性。 通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类这样就继承了各种属性。如果2个对象类中有相同的属性则条目继承后只会保留1个属性。对象类同时也规定了哪些属性是基本信息必须含有(Must 活Required必要属性)哪些属性是扩展信息可以含有May或Optional可选属性。 对象类有三种类型结构类型Structural、抽象类型(Abstract)和辅助类型Auxiliary。结构类型是最基本的类型它规定了对象实体的基本属性每个条目属于且仅属于一个结构型对象类。抽象类型可以是结构类型或其他抽象类型父类它将对象属性中共性的部分组织在一起称为其他类的模板条目不能直接集成抽象型对象类。辅助类型规定了对象实体的扩展属性。每个条目至少有一个结构性对象类。 对象类本身是可以相互继承的所以对象类的根类是top抽象型对象类。以常用的人员类型为例他们的继承关系 在OpenLDAP的schema中定义了很多objectClass下面列出部分常用的objectClass的名称。 ● account ● alias ● dcobject ● domain ● ipHost ● organization ● organizationalRole ● organizationalUnit ● person ● organizationalPerson ● inetOrgPerson ● residentialPerson ● posixAccount ● posixGroup 2.5   Attribute 属性Attribute类似于程序设计中的变量可以被赋值。在OpenLDAP中声明了许多常用的Attribute用户也可自己定义Attribute。 每个条目都可以有很多属性Attribute比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值属性值可以有单个、多个比如你有多个邮箱。 属性不是随便定义的需要符合一定的规则而这个规则可以通过schema制定。比如如果一个entry没有包含在 inetorgperson 这个 schema 中的objectClass: inetOrgPerson那么就不能为它指定employeeNumber属性因为employeeNumber是在inetOrgPerson中定义的。 LDAP为人员组织机构中常见的对象都设计了属性(比如commonNamesurname)。下面有一些常用的别名 常见的Attribute含义如下 ● c国家。 ● cncommon name指一个对象的名字。如果指人需要使用其全名。 ● dcdomain Component常用来指一个域名的一部分。 ● givenName指一个人的名字不能用来指姓。 ● l指一个地名如一个城市或者其他地理区域的名字。 ● mail电子信箱地址。 ● oorganizationName指一个组织的名字。 ● ouorganizationalUnitName指一个组织单元的名字。 ● snsurname指一个人的姓。 ● telephoneNumber电话号码应该带有所在的国家的代码。 ● uiduserid通常指某个用户的登录名与Linux系统中用户的uid不同。 温馨提示objectClass是一种特殊的Attribute它包含其他用到的Attribute以及其自身。 对于不同的objectClass通常具有一些必设属性值和一些可选属性值。例如可使用person这个objectClass来表示系统中一个用户的条目对于系统中用户通常需要有这样一些信息姓名、电话、密码、描述等。如下图所示对于person通过cn和sn设置用户的名和姓这是必须设置的而其他属性则是可选的。 下面列出部分常用objectClass要求必设的属性。 ● accountuserid。 ● organizationo。 ● personcn和sn。 ● organizationalPerson与person相同。 ● organizationalRolecn。 ● organizationUnitou。 ● posixGroupcn、gidNumber。 ● posixAccountcn、gidNumber、homeDirectory、uid、uidNumber。 2.6   创建LDIF文件 对以上内容有一定了解之后就可以编写输入LDIF文件编辑需要向目录数据库添加的条目了。 下面根据如下图所示的结构创建LDIF文件dlw.com.ldif。 对上图进行分析该目录结构分为3层有4个结点。根据上图可创建LDIF文件如下温馨提示每个结点可用一个dn表示对于每个结点又可继续添加新的结点。如在根结点中可添加其他部门ou在oumanagers结点也可继续添加其他管理人员的信息。 1: dn:dcdlw,dccom 2: objectclass:top 3: objectclass:dcobject 4: objectclass:organization 5: dc:dlw 6: o:dlw,Inc. 7: 8: dn:oumanagers, dcdlw, dccom 9: ou:managers 10: objectclass:organizationalUnit 11: 12: dn:cndlw,oumanagers,dcdlw,dccom 13: cn:dlw 14: sn:wangshibo 15: objectclass:person 16: 17: dn:cntest,oumanagers,dcdlw,dccom 18: cn:test 19: sn:Test User 20: objectclass:person 以上文件中各行的含义如下 第16行创建根结点这部分在前面也有介绍就不再重复了。 第7、11、16行为空行用来分隔4个dn条目4个结点。 第810行定义cnmanagers结点的条目该条目的objectClass为organizationalUnit因此需要用ou属性定义组织名称。 第1215行定义cndlw结点的条目该条目使用的objectClass为person因此需设置cn和sn两个属性值。 第1720行与第1215行的意义相同。 在以上LDIF文件中第1、8、12、17行以dn开头这部分内容必须唯一并且在向目录数据库添加这些数据时也要确保这些数据不能与目录数据库中已有数据相同否则添加操作将中断。 ldap命令的使用 1增加增ldapadd 选项 -x 进行简单认证 -D 用来绑定服务器的DN -h 目录服务的地址 -w 绑定DN的密码 -f 使用ldif文件进行条目添加的文件例子 将 test.ldif 中的数据导入 ldap [rootopenldap ~]# ldapadd -x -D cnroot,dckevin,dccom -w secret -f /root/test.ldif2删除ldapdelete 例子 [rootopenldap ~]# ldapdelete -x -D cnManager,dctest,dccom -w secret uidtest1,ouPeople,dctest,dccom [rootopenldap ~]# ldapdelete -x -D cnroot,dcit,dccom -w secert uidzyx,dcit,dccom3修改ldapmodify 选项 -a 添加新的条目.缺省的是修改存在的条目. -C 自动追踪引用. -c 出错后继续执行程序并不中止.缺省情况下出错的立即停止. -D binddn 指定搜索的用户名(一般为一dn 值). -e 设置客户端证书文件,例: -e cert/client.crt -E 设置客户端证书私钥文件,例: -E cert/client.key -f file 从文件内读取条目的修改信息而不是从标准输入读取. -H ldapuri 指定连接到服务器uri。常见格式为ldap://hostname:port -h ldaphost 指定要连接的主机的名称/ip 地址.它和-p 一起使用. -p ldapport 指定要连接目录服务器的端口号.它和-h 一起使用. -M[M] 打开manage DSA IT 控制. -MM 把该控制设置为重要的. -n 用于调试到服务器的通讯.但并不实际执行搜索.服务器关闭时,返回错误服务器打开时,常和-v 参数一起测试到服务器是否是一条通路. -v 运行在详细模块.在标准输出中打出一些比较详细的信息.比如:连接到服务器的ip 地址和端口号等. -V 启用证书认证功能,目录服务器使用客户端证书进行身份验证,必须与-ZZ 强制启用TLS 方式配合使用,并且匿名绑定到目录服务器. -W 指定了该参数,系统将弹出一提示入用户的密码.它和-w 参数相对使用. -w bindpasswd 直接指定用户的密码. 它和-W 参数相对使用. -x 使用简单认证. -Z[Z] 使用StartTLS 扩展操作.如果使用-ZZ,命令强制使用StartTLS 握手成功.例子 [rootopenldap ~]# ldapmodify -x -D cnroot,dcit,dccom -W -f modify.ldif4查询ldapsearch 选项 -x 进行简单认证 -D 用来绑定服务器的DN -w 绑定DN的密码 -b 指定要查询的根节点 -H 制定要查询的服务器例子 [rootopenldap ~]# ldapsearch -x -D cnroot,dckevin,dccom -w secret -b dckevin,dccom 使用简单认证用 cnroot,dckevin,dccom 进行绑定要查询的根是 dckevin,dccom。这样会把绑定的用户能访问dckevin,dccom下的所有数据显示出来。[rootopenldap ~]# ldapsearch -x -W -D cnadministrator,cnusers,dcosdn,dccn -b cnadministrator,cnusers,dcosdn,dccn -h troy.osdn.zzti.edu.cn [rootopenldap ~]# ldapsearch -b dccanon-is,dcjp -H ldaps://192.168.10.192:3895设置使用者密码ldappasswd 选项 -x 进行简单认证 -D 用来绑定服务器的DN -w 绑定DN的密码 -S 提示的输入密码 -s pass 把密码设置为pass -a pass 设置old passwd为pass -A 提示的设置old passwd -H 是指要绑定的服务器 -I 使用sasl会话方式例子 [rootopenldap ~]# ldappasswd -x -D cmroot,dcit,dccom -w secret uidzyx,dcit,dccom -S 2.7   从LDIF文件添加到目录数据库 使用OpenLDAP客户端工具ldapadd命令可将LDIF文件中的条目添加到目录数据库中该命令的格式如下 # ldappadd 选项 LDIF文件 在ldappadd命令中常用的选项如下 -x进行简单认证。-D用来绑定服务器的dn。-h目录服务的地址。-w绑定dn的密码。-f使用LDIF文件进行条目添加的文件。 将前面编写的LDIF文件的条目数据添加到目录数据库中。 具体操作步骤如下 1检查dlw.com.ldif文件中的内容需要注意的是每个冒号后面都需要空一格而每行结束处不能留有空格字符。 2使用以下命令将dlw.com.ldif文件中的条目添加到目录中 # ldapadd -x -D cnroot,dcdlw,dccom -w secret -f dlw.com.ldif 温馨提示如果以上命令执行不成功需要逐个字符检查dlw.com.ldif文件中的内容特别注意空格的问题。 2.8   查询 添加到目录中的条目被保存在目录数据库在Linux命令界面下可使用OpenLDAP客户端工具ldapsearch命令来进行查询。该命令的格式如下 # ldapsearch 选项 过滤 属性值 常用的选项有以下几个:-x进行简单认证。-D用来绑定服务器的dn。-w绑定dn的密码。-b指定要查询的根节点。-H制定要查询的服务器。 使用ldapsearch命令查询“dcdlw, dccom”下的所有条目可使用以下命令 ldapsearch -x -b dcdlw,dccom  而如果使用以下命令将查询显示sn中以字符wu开头的条目将得到如下图所示的查询结果只找到一个条目。 # ldapsearch -x -b dcdlw,dccom snwu*  2.9   修改条目 使用OpenLDAP客户端工具ldapmodify命令可对目录数据库中的条目进行修改。该命令的格式如下 # ldapmodify 选项 该命令的选项也很多常用选项与ldapadd类似这里就不再列出了。温馨提示使用ldapmodify命令不能修改条目的dn但可以修改其他属性值。 使用ldapmodify命令修改条目信息可以有两种方式一种是交互式进行修改另一种是通过文件进行修改。 1) 交互式修改 修改前面创建的条目cntest, oumanagers, dcdlw, dccom将其sn属性修改为Test User Modify并添加一个description属性设置其值为add Attribute。 首先输入以下命令进行修改状态 1 # ldapmodify -x -D cnroot,dcdlw,dccom -W secret  执行以上命令后终端将等候用户输入需要修改条目的dn输入以下内容 1 2 3 4 dn: cntest, oumanagers, dcdlw, dccom  changetype: modify  replace: sn  sn: Test User Modify 以上输入内容中第1行查找需要修改的条目第2行设置修改模式第3行设置需要替换的属性sn第4行给属性sn重新设置一个值替换该属性原有的值。 输入完以上内容之后再按Enter键程序将按以上设置更新数据然后按CtrlC键退出修改命令。 使用以上命令修改条目的数据之后可使用以下命令查看是否修改成功 1 # ldapsearch -x -b dcdlw,dccom cntest 2) 通过文件修改 通过前面的方式对条目进行修改时很不方便如果在交互方式时输错了某个字符只能中断命令后重新进行修改。因此更好的修改方法是首先将修改时输入的文字保存到一个文件中然后以该文件作为输入进行修改。用这种方式进行操作首先需要创建一个临时文件用来保存需要进行的修改操作下面演示这种方式的修改过程。 【例子】通过修改命令将前面LDAP数据库中的信息还原即将sn属性由“Test User Modify”修改为“Test User”。 具体操作步骤如下[1]  使用vi编辑器创建一个文件modify在其中输入以下内容 1 2 3 4 dn: cntest,oumanagers,dcdlw,dccom  changetype: modify  replace: sn  sn: Test User 从以上输入内容可看到与在交互式时输入的内容完全相同。 技巧使用文件方式修改条目可方便修改和检查若某个地方有输入错误可修改后再调用ldapmodify进行修改减少输入量。 [2] 使用以下命令调用modify的内容进行修改 1 # ldapmodify -x -D cnroot,dcdlw,dccom -w secret -f modify  2.10   删除条目 对于目录数据库中不用的条目也可使用ldapdelete命令将其删除。该命令的格式如下 # ldapdelete 选项 删除条目 该命令使用的选项与ldapadd类似就不再列出来了。 删除目录数据库中的“cntest,oumanagers,dcdlw,dccom”条目具体命令如下 1 # ldapdelete -x -D cnroot,dcdlw,dccom -w secret cntest,oumanagers,dcdlw,dccom  顺利执行以上命令后终端上将不会有任何信息输出表示完成了删除操作。 使用ldapdelete命令只能删除树形结构中的叶结点条目如果删除非叶结点条目将出现错误提示。例如执行以下命令删除根结点“dcdlw,dccom”由于根结点下面还有结点将显示如下图所示的错误提示信息 应该使用命令 1 # ldapdelete -x -D cnroot,dcdlw,dccom -w secret dcdlw,dccom 2.11   数据导出 通过ldapadd命令可向目录数据库中添加数据在某些情况下可能还需要进行反向操作即将目录数据库中的数据导出。 使用ldapsearch命令对目录数据库进行搜索然后通过重定向将搜索结果保存到一个文件中可达到导出数据的目的。另外导出数据更常用的是slapcat命令该命令的格式如下 # slapcat 选项 最常用的选项就是-l表示导出为LDIF文件格式。 如将前面例子中创建的目录数据库导出为export.ldif文件可使用以下命令 1 # slapcat -l export.ldif 温馨提示从导出结果可看出除了使用ldapadd命令添加到目录数据库中的条目数据外还导出了很多其他信息包括条目录UUID、时间戳等信息。 2.12   设置主从LDAP服务器 在某些时候为了对LDAP服务器进行负载均衡可能希望设置多台LDAP服务器。对于设置多台LDAP服务器的关键问题是数据的同步问题使用slurpd进程可进行主LDAP服务器向从LDAP服务器复制数据的操作。下面将介绍架设主从LDAP服务器的过程 2.13   多台LDAP服务器工作过程 对于多台LDAP服务器可设置一台为主服务器其他的为从服务器。本节介绍一台从服务器的配置若是多台从服务器也可按此步骤进行操作。 注意在进行配置之前应首先确保每个LDAP服务器都已安装好OpenLDAP服务器程序并能正确工作。 配置好主从LDAP服务器之后在主服务器运行slurpd进程该进程使用LDAP协议从主服务器的数据库更新从服务器的数据具体操作过程如下 1LDAP客户端向从服务器提交一个LDAP修改请求。 2从服务器给LDAP客户端返回一个指向主服务器的引用。 3LDAP客户端向主服务器提交LDAP修改请求。 4主服务器对数据库中的数据进行修改并将改变写入本机的日志文件。 5在主服务器运行的slurpd进程检查到日志中有新内容通过日志的信息将改变发送给从服务器。 6从服务器接收slurpd发来的信息对本地数据进行修改。 以上过程就是使用slurpd进程进行数据复制的过程。从以上过程可看出需要在主服务器的配置文件中设置要向哪些从服务器发送复制信息、主服务器还要设置一个记录数据改变的日志文件而从服务器需要设置一个指向主服务器的链接。 2.14   复制数据库 首先把主从服务器关闭。然后通过以下三步操作静态同步主从服务器上的数据 把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中覆盖原有文件。 把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中覆盖原有文件。 把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中覆盖原有文件。 三、其他补充说明 3.1  Ldap常见对象属性 LDAP为人员组织机构中常见的对象都设计了属性(比如commonNamesurname)。下面有一些常用的别名 3.2  ldif文件示例 可以说LDIF文件是OpenLDAP操作数据或修改配置的一切来源下面是实际通过客户端工具操作的具体示例。 1添加组织或条目 创建一个Marketing部门添加一个dn记录 [rootldap-server ~]# cat add_entry.ldif dn: ouMarketing, dcexample,dccom changetype: add objectclass: top objectclass: organizationalUnit ou: Marketingdn: cnPete Minsky,ouMarketing,dcexample,dccom changetype: add objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Pete Minsky sn: Pete ou: Marketing description: sb, sx description: sx uid: pminsky[rootldap-server ~]# ldapmodify -xWD cnadmin,dcexample,dccom -f add_entry.ldif或去掉changetype后 [rootldap-server ~]# ldapmodify -a -xWD cnadmin,dcexample,dccom -f add_entry.ldif [rootldap-server ~]# ldapadd -xWD cnadmin,dcexample,dccom -f add.ldif2修改组织或条目 添加mail属性修改sn的值删除一个description属性 [rootldap-server ~]# cat modify_entry.ldif dn: cnPete Minsky,ouMarketing,dcexample,dccom changetype: modify add: mail mail: pminskyexample.com - replace: sn sn: Minsky - delete: description description: sx[rootldap-server ~]# ldapmodify -xWD cnadmin,dcexample,dccom -f modify_entry.ldif [rootldap-server ~]# ldapsearch -xD cnadmin,dcmydomain,dcnet -b ouPeople,dcmydomain,dcnet -s sub objectclass* -w tplink -LLL3重命名条目 dn: cnPete Minsky,ouMarketing,dcexample,dccom changetype: modrdn newrdn: cnSusan Jacobs deleteoldrdn: 1modrdn只允许修改dn最左边的部分且不能重命名带叶子或分支的子树如果要将一个用户移动到另一个部门下只能在新部门创建dn然后删除旧的dn。4删除组织或条目 LDAP协议只能删除无分支的叶子dn [rootldap-server ~]# cat delete_entry.ldif dn: cnSusan Jacobs,ouMarketing,dcexample,dccom changetype: delete或 [rootldap-server ~]# ldapdelete -xWD cnadmin,dcexample,dccom -h localhost -p 389 cnSusan Jacobs,ouMarketing,dcexample,dccom5LDIF配置backend OpenLDAP的配置采用以cnconfig为根的目录树的形式组织起来采用config作为database默认情况下包括admin或root用户都没有访问权限需要赋予读写权限 然而赋予修改权限要求首先要提供认证信息初始化安装后的cnconfig是没有credentials [rootldap-server ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f modify_config.ldif SASL/EXTERNAL authentication started SASL username: gidNumber0uidNumber0,cnpeercred,cnexternal,cnauth SASL SSF: 0 modifying entry olcDatabase{0}config,cnconfig ldap_modify: Insufficient access (50)所以这里不得不手动编辑olcDatabase{0}config.ldif文件获得最初认证权限虽然官方不推荐手动修改配置 [rootldap-server ~]# vi /etc/ldap/slapd.d/cn\config/olcDatabase\\{0\}config.ldif olcRootPW: {SSHA}your_slappasswd_secret重启slapd后便可以修改config [rootldap-server ~]# /etc/init.d/slapd restart [rootldap-server ~]# ldapwhoami -x -D cnconfig -W修改示例 [rootldap-server ~]# ldapmodify -xWD cnconfig Enter LDAP Password: dn: olcDatabase{0}config,cnconfig changetype: modify replace: olcRootDN olcRootDN: cnconfig - replace: olcRootPW olcRootPW: {SSHA}your_slappasswd_secretmodifying entry olcDatabase{0}config,cnconfig在/etc/ldap/slapd.d/cnconfig/olcDatabase{0}config.ldif中olcRootDN变成base64加密后的值两个”:”。最后如果要在slapd服务未启动的情况下修改配置可以通过以下命令转换成ldif中间文件 [rootldap-server ~]# slapcat -n0 -F /etc/ldap/slapd.d/ /tmp/config-in-portable-format.ldif 编辑ldif文件后重新shengc slapd.d目录 [rootldap-server ~]# slapadd -n0 -F /tmp/slapd.d -l /tmp/config-in-portable-format.ldif 3.3 OpenLDAP配置步骤 OpenLDAP主配置文件slapd.conf,该配置文件一般保存在安装目录下的etc/openldap/目录下。它的初始内容如下: [rootldap-server openldap]# cat slapd.conf # # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include        /usr/local/etc/openldap/schema/core.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/var/run/slapd.pid argsfile       /usr/local/var/run/slapd.args # Load dynamic backend modules: # modulepath   /usr/local/libexec/openldap # moduleload    back_bdb.la # moduleload    back_hdb.la # moduleload    back_ldap.la # Sample security restrictions #       Require integrityprotection (prevent hijacking) #       Require 112-bit (3DESor better) encryption for updates #       Require 63-bitencryption for simple bind # security ssf1 update_ssf112 simple_bind64 # Sample access control policy: #       Root DSE: allow anyoneto read it #       Subschema (sub)entryDSE: allow anyone to read it #       Other DSEs: #               Allow selfwrite access #               Allowauthenticated users read access #               Allowanonymous users to authenticate #       Directives needed toimplement policy: # access to dn.base by * read # access to dn.basecnSubschema by * read # access to * #       by self write #       by users read #       by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn.  (e.g.,access to * by * read) # # rootdn can always read and write EVERYTHING! ####################################################################### # BDB database definitions ####################################################################### database        bdb suffix         dcmy-domain,dccom rootdn         cnManager,dcmy-domain,dccom # 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 # 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/var/openldap-data # Indices to maintain index   objectClass     eq 需要注意的 设置LDAP使用的Schema [rootopenldap-server openldap]# vi slapd.conf 找到语句 include         /usr/local/etc/openldap/schema/core.schema 在该语句的后面添加以下语句 include         /usr/local/etc/openldap/schema/corba.schema include         /usr/local/etc/openldap/schema/cosine.schema include         /usr/local/etc/openldap/schema/dyngroup.schema include         /usr/local/etc/openldap/schema/inetorgperson.schema include         /usr/local/etc/openldap/schema/java.schema include         /usr/local/etc/openldap/schema/misc.schema include         /usr/local/etc/openldap/schema/nis.schema include         /usr/local/etc/openldap/schema/openldap.schema 设置目录树的后缀 找到语句 suffix            dcmy-domain,dccom 将其改为 suffix            dcexample,dccom 设置LDAP管理员的DN 找到语句 rootdn                   cnManager,dcmy-domain,dccom 将其改为 rootdn                   cnroot,dcexample,dccom 设置LDAP管理员的口令 找到语句 rootpw                  secret 将其改为 rootpw                  123456    注修改密码的时候需要注意rootpw前面不能有空格以及rootpw与密码之间用TAB键隔开。 设置数据库的存放路径 # Indices to maintain index  objectClass     eq    注蓝色部分可以根据需要进行修改   3.4 数据导入 数据导入的方式主要有四种 a手工输入 b.ldif文件格式录入 c脚本自动录入 d客户端工具录入
http://www.hkea.cn/news/14274066/

相关文章:

  • 做网站用那种数据库深圳html5网站建设
  • 杜集网站建设大基建最新消息
  • 企业网站建设及运营现状分析公司品牌推广方案范文
  • 0基础做网站湖南旅游攻略
  • 淮北论坛租房信息网站seo快速排名
  • 建网站淄博目录和文章wordpress
  • 彩票网站怎么做赚钱吗wordpress 动态菜单
  • 怎么做类似淘宝网站吗同一服务器如何建设多个网站
  • 嘉兴有能做网站优化手把手教你做网站视频
  • 网站建设需求分析报告功能新媒体运营培训
  • 想自己在家做外贸网站卡密wordpress插件
  • 网站上百度要怎么做的建e网室内设计效果图餐厅
  • 做外贸要看哪些网站好万网域名
  • 如何兼职做网站新能源电动汽车电池价格
  • 大同网站建设熊掌号传统文化网站设计
  • 网站开发建设账务处理程序长治推广型网站开发
  • 银行网站开发武邑网站建设公司
  • 企业网站Wap在线生成asp网站优缺点
  • 外贸网站建设需要什么网络网站建设公司
  • 服装网站推广方案苏州科建设交通学院网站
  • 免费企业网站认证seo全国最好的公司
  • wordpress+手工网站北京优化seo公司
  • 企业网站建设公司丰台黄冈论坛东部社区
  • 照明做外贸的有那些网站一个网站可以同时几个主域名吗
  • 免费搭建企业网站友情链接的定义
  • 自己做传奇网站网络营销就业方向和前景
  • 上海整站优化公司泰安网络公司推荐
  • 网站建设案例 星座网站建设的提升
  • 专业做网站 优帮云动画网站源码
  • 张家口建站优化南昌网站排名优化