scala中:::的用法_主题304:用法

scala中:::的用法

在你开始前

了解这些教程可以教给您什么以及如何从中获得最大收益。

关于本系列

Linux Professional Institute (LPI)通过三个级别对Linux®系统管理员进行认证: 初级 (也称为“认证级别1”), 高级 (也称为“认证级别2”)和高级 (也称为“认证级别3”) ”)。 要获得认证1级,您必须通过考试101和102。要达到认证2级,您必须通过考试201和202。要达到认证3级,您必须具有有效的高级认证并通过考试301(“核心”)。 您可能还需要通过其他高级专业考试。

developerWorks提供了教程,以帮助您准备五个初级,高级和高级认证考试。 每个考试涵盖几个主题,并且每个主题在developerWorks上都有一个相应的自学教程。 表1列出了LPI 301考试的六个主题和相应的developerWorks教程。

表1. LPI 301考试:教程和主题
LPI 301考试主题 developerWorks教程 教程总结
主题301 LPI 301考试准备:
概念,体系结构和设计
了解有关LDAP概念和体系结构,如何设计和实现LDAP目录以及架构的信息。
主题302 LPI 301考试准备:
安装与开发
了解如何安装,配置和使用OpenLDAP软件。
主题303 LPI 301考试准备:
组态
详细了解如何配置OpenLDAP软件。
主题304 LPI 301考试准备:
用法
(本教程)了解如何搜索目录并使用OpenLDAP工具。 请参阅详细目标
主题305 LPI 301考试准备:
整合与迁移
快来了。
主题306 LPI 301考试准备:
容量规划
快来了。

要通过301考试(并达到3级认证),必须满足以下条件:

  • 您应具有多年在各种用途的计算机上安装和维护Linux的经验。
  • 您应该具有与各种技术和操作系统的集成经验。
  • 您应该具有作为企业级Linux专业人员的专业经验或接受过培训(包括作为其他角色的一部分的经验)。
  • 您应该了解Linux管理的高级和企业级别,包括安装,管理,安全性,故障排除和维护。
  • 您应该能够使用开源工具来衡量容量计划并解决资源问题。
  • 您应该具有使用LDAP与UNIX®服务和Microsoft®Windows®服务(包括Samba,可插拔身份验证模块(PAM),电子邮件和Active Directory)集成的专业经验。
  • 您应该能够使用Samba和LDAP进行规划,架构,设计,构建和实施完整的环境,并能够评估服务的容量规划和安全性。
  • 您应该能够使用Bash或Perl创建脚本,或者至少了解一种系统编程语言(例如C)。

要继续为3级认证做准备,请参阅LPI 301考试系列的developerWorks教程 ,以及整套developerWorks LPI教程

Linux Professional Institute不特别认可任何第三方考试准备材料或技术。

关于本教程

欢迎使用“配置”,这是为您准备LPI 301考试而设计的六个教程中的第四 。在本教程中,您将学习如何搜索目录,如何使用命令行工具进行搜索和管理以及如何配置第三个第三方应用程序将您的LDAP树用作Whitepages服务。

本教程根据该主题的LPI目标进行组织。 粗略地说,对于权重较高的目标,应在考试中遇到更多问题。

目标

表2提供了本教程的详细目标。

表2.配置:本教程涵盖的考试目标
LPI考试目标 客观体重 客观总结
304.1
搜索目录
2 使用高级选项搜索LDAP目录
304.2
LDAP命令行工具
4 使用各种命令行工具来搜索,修改和管理LDAP服务器
304.3
白页
1个 将LDAP服务器用作MicrosoftOutlook®等应用程序的Whitepages服务

先决条件

为了从本教程中获得最大收益,您应该具有Linux的高级知识以及可以在其上实践所涵盖命令的有效Linux系统。

如果您的基本Linux技能有点生锈,那么您可能需要先阅读LPIC-1和LPIC-2考试教程

程序的不同版本可能会不同地格式化输出,因此您的结果可能看起来与本教程中的清单和图不完全相同。

系统要求

要按照本教程中的示例进行操作,您将需要具有OpenLDAP软件包并支持PAM的Linux工作站。 大多数现代发行版都满足这些要求。

搜索目录

本部分介绍了高级Linux专业人员(LPIC-3)考试301的主题304.1的材料。此主题的权重为2。

在本节中,学习如何:

  • 将OpenLDAP搜索工具与基本选项一起使用
  • 将OpenLDAP搜索工具与高级选项一起使用
  • 优化LDAP搜索查询
  • 使用搜索过滤器及其语法

仅当您在需要时可以找到条目时,树中的数据才有用。 LDAP提供了一组强大的功能,使您可以从树中提取信息。

搜索基础

要搜索树,您需要四项信息:

  1. 包含树的服务器上的凭证
  2. 树上的专有名称(DN)
  3. 搜索范围
  4. 搜索过滤器

在本系列的以前的教程中 ,您已经了解了服务器凭据。 凭据可以为空,从而导致匿名绑定,也可以是条目的DN和密码。 隐含的是服务器认为这些凭据有效,并愿意允许您搜索!

搜索所基于的DN称为基本DN 。 所有结果将是基本DN本身或其子级。 如果您的基本DN是ou=people,dc=ertw,dc=com ,则可能会找到cn=Sean Walberg,ou=people,dc=ertw,dc=com ,但找不到cn=Users,ou=Groups,dc=ertw,dc=com ,因为它位于您要搜索的基本DN之外。

范围确定将搜索基本DN下的哪些条目。 您可能由于性能原因或由于仅基本DN的某些子级包含所需信息而限制范围。 缺省搜索范围下级 (通常缩写为sub )包括基本DN和所有子级。 您只能搜索具有基本范围的基本DN,例如,当您要测试以查看条目是否存在时。 称为“ 1 ”的搜索范围仅搜索基本DN的直接子代,不包括任何孙代和基本DN本身。 图1显示了一个树以及将包含在三个不同搜索范围中的条目。

图1.三种不同的搜索范围
三种不同的搜索范围

搜索中最强大(也是最复杂)的部分是搜索过滤器。 凭据,基本DN和范围限制了要搜索的条目,但是查询将检查每个记录并仅返回与您的条件匹配的记录。

简单的搜索过滤器

搜索过滤器括在括号中。 括号内是一对attribute=value 。 一个简单的搜索过滤器将是(objectClass=inetOrgPerson) ,它将查找任何具有inetOrgPerson的objectClass的条目。 属性本身不区分大小写,但是值可能会或可能不会取决于模式中定义属性的方式。 回顾第一篇教程LPI 301考试准备:
模式定义概念及其体系结构的概念,体系结构和设计 。 该属性的一个属性是比较是否区分大小写。

子字符串搜索使用星号(*)运算符执行。 搜索(Sean*)以匹配以Sean开头的任何内容。 星号可以在字符串中的任意位置,例如(* Walberg)可以找到以Walberg结尾的任何内容,甚至S*Wa*berg可以找到以S开头,以berg结尾并且Wa在中间的地方。 您可能会用它来查找作者的名字,而不知道它是肖恩还是肖恩,还是沃尔伯格还是瓦尔伯格。

星号运算符的最通用形式, attribute=*检查指定属性的存在。 要查找具有已定义电子邮件地址的所有条目,可以使用(mail=*)

AND,OR和NOT

您可以使用“&”执行逻辑“与”或“或”运算 和“ |” 运算符。 LDAP搜索字符串将运算符放在条件之前,因此您将看到清单1所示的过滤器。

清单1.使用AND和OR的样本搜索过滤器
(|(objectClass=inetOrgPerson)(objectClass=posixAccount)) (&(objectClass=*)(cn=Sean*)(ou=Engineering)) (&(|(objectClass=inetOrgPerson)(objectClass=posixAccount))(cn=Sean*))

清单1中的第一个搜索字符串查找具有inetOrgPersonposixAccount的objectClass的任何内容。 请注意,每个组件仍用括号括起来,或运算符(|)及其两个搜索选项也用另一组括号括起来。

第二个搜索字符串相似,但是以AND运算而不是OR开头。 在这里,必须满足三个不同的测试,并且它们都在其自己的括号内都跟随“&”号。 第一个子句objectClass=* ,将任何与已定义的objectClass匹配(无论如何应为所有内容)。 当您想匹配所有内容并需要输入过滤器时,对所有objectClasses的搜索通常用作搜索过滤器。 第二个子句匹配以Sean开头的任何东西。

第三个搜索字符串显示在过滤器中同时使用的AND和OR,该过滤器查找具有inetOrgPersonposixAccount的objectClass以及以Sean开头的通用名称的任何posixAccount

逻辑上的NOT是用感叹号(!)执行的,非常类似于AND和OR。 逻辑“非”只有一个自变量,因此只能在感叹号后面加上一组括号。 清单2显示了NOT的一些有效和无效用法。

清单2.如何使用和如何不使用逻辑NOT
(!cn=Sean) # invalid, the ! applies to a filter inside () (!(cn=Sean)) # valid (!(cn=Sean)(ou=Engineering)) # invalid, only one filter can be negated (!(&cn=Sean*)(ou=Engineering))) # valid, negates the AND clause

在清单2的第四个示例中,将否定应用于AND过滤器。 因此,该规则返回不同时满足两个AND子句的所有条目。 否定复合过滤器时要小心,因为结果并不总是直观的。 如果清单2的第四个示例没有以Sean开头的通用名称,则仍将返回带有ouEngineering条目。 两个测试都必须通过才能排除该记录。

搜索范围

通常,您需要搜索一系列值。 LDAP提供< =和> =运算符来查询属性。 注意不要包含等号(=),因为没有< 和> 运算符-您还必须测试是否相等。

并非所有整数属性都可以使用范围运算符检查。 如有疑问,请检查架构以确保属性通过ORDERING关键字实现排序类型。 回顾第一篇教程LPI 301考试准备:
在架构中定义属性的概念,体系结构和设计 ,定义的一部分包括服务器应如何对属性进行排序。

搜索接近的比赛

LDAP目录通常用于存储名称,这会导致拼写问题。 “ Sean”也可以是“ Shawn”或“ Shaun”。 LDAP提供了一个“类似声音”的运算符“〜=”,它返回听起来与搜索字符串相似的结果。 例如, (cn~=Shaun)返回具有通用名称的结果,该名称包含听起来像“ Shaun”的单词。 在类似声音的搜索中隐含一个子字符串搜索,因此(cn=~Shaun)将返回cn=Shawn Walberg 。 不过,OpenLDAP实现并不完美。 相同的搜索不会返回“ Sean”拼写的结果。

搜索DN

到目前为止,所有示例都集中于搜索属性,而不是搜索标识记录的专有名称(DN)。 即使DN的最左侧部分(相对DN(RDN))显示为属性,因此可以搜索,但到目前为止提供的搜索过滤器将不会查看DN的其余部分。

搜索DN是通过需要精确匹配的特定查询过滤器完成的。 格式为attribute:dn:=value ,其中attribute是您要搜索的DN的组成部分,而值是搜索字符串(不允许使用通配符)。 例如, (ou:dn:=People)将返回DN中具有ou=People所有条目,包括容器对象本身。

修改matchingRule

默认情况下,大多数字符串(例如通用名)不区分大小写。 如果要覆盖匹配规则,则可以使用类似于DN搜索的形式。 诸如(ou:caseexactmatch:=people)将匹配“ people”而不是“ People”的组织单位。 一些常见的匹配规则是:

  • caseIgnoreMatch匹配字符串而不考虑大小写。 匹配时也忽略前导和尾随空格。
  • caseExactMatch是一个字符串匹配项,在搜索的两个字符串之间也需要类似的大写字母。
  • octetStringMatch类似于字符串匹配,但不会删除空格,因此需要精确的逐字节匹配。
  • telephoneNumberMatch搜索一个电话号码,该电话号码在LDAP中具有其自己的数据类型。

您也可以通过将DN搜索与匹配规则搜索结合来更改DN搜索的匹配规则。 例如, (ou:dn:caseexactmatch:=people)搜索包含确切字符串“ people”的DN。

DN搜索和匹配规则搜索这两种搜索也称为可扩展搜索 。 它们都需要精确的字符串,并且不允许使用通配符。

使用ldapsearch

搜索树的命令行工具是ldapsearch 。 使用此工具,您可以通过多种方式绑定到目录,执行一个或多个搜索以及以LDIF格式检索数据。

ldapsearch的默认行为是:

  • 尝试对服务器进行简单身份验证和安全层(SASL)身份验证
  • 通过ldap:// localhost:389连接到服务器
  • 使用(objectClass=*)作为搜索过滤器
  • 从/etc/openldap/ldap.conf阅读搜索基础
  • 执行子搜索; 也就是说,包括搜索库和所有子项
  • 返回所有用户属性,而忽略操作(内部使用)属性
  • 使用扩展的LDAP数据交换格式(LDIF)进行输出
  • 不对输出进行排序
验证服务器

如果不使用SASL,则需要使用-x参数进行简单身份验证。 -x本身执行匿名绑定 ,这是没有任何绑定DN或密码的绑定。 给定其他缺省值, ldapsearch -x将转储整个树,从/etc/openldap/ldap.conf中指定的搜索库开始。 清单3显示了一个简单的匿名搜索的用法。

清单3.一个简单的匿名搜索
$ ldapsearch -x # extended LDIF # # LDAPv3 # base <> with scope subtree # filter: (objectclass=*) # requesting: ALL # # people, ertw.com dn: ou=people,dc=ertw,dc=com ou: people description: All people in organization objectClass: organizationalUnit ... output truncated ...

清单3显示了从简单的匿名搜索返回的标题和第一项。 前七行形成标题,并以LDIF格式注释,以井号(#)开头。 前三行将文本的其余部分标识为扩展的LDIF,并使用LDAP版本3进行检索。下一行指示未指定基本DN,并且使用了子树搜索。 文本的最后两行为搜索过滤器提供了所有内容,并请求了所有属性。

您可以使用-LLL选项从输出中删除所有注释。

标头之后是每个条目; 每个条目都以描述条目的标题开头,然后是从DN开始的属性列表。 属性未排序。

如果需要使用用户名和密码登录,请使用-D-w选项分别指定绑定DN和密码。 例如, ldapsearch -x D cn=root,dc=ertw,dc=com -w mypassword将使用根DN用户名和密码执行简单的身份验证。 您也可以选择使用-W而不是-w password在不回显屏幕的提示中键入-w password

您还可以通过使用-H选项将统一资源标识符(URI)传递到远程LDAP服务器来连接到其他服务器,例如ldapsearch -x -H ldap://192.168.1.1/以在以下位置连接到LDAP服务器: 192.168.1.1

执行搜索

将搜索过滤器追加到命令行以执行搜索。 您可能必须将过滤器括在引号中,以防止Shell解释搜索字符串中的特殊字符。 清单4显示了对通用名称的简单搜索。

清单4.从命令行进行简单搜索
$ ldapsearch -LLL -x '(cn=Fred Smith)' dn: cn=Fred Smith,ou=people,dc=ertw,dc=com objectClass: inetOrgPerson sn: Smith cn: Fred Smith mail: fred@example.com

清单4中的搜索使用-LLL选项删除输出中的注释,并使用-x选项强制进行简单认证。 最后一个参数是一个搜索字符串,用于查找Fred Smith的条目。 请注意,括号在搜索中使用,并且单引号用于保护括号,因为括号被解释为子shell调用,并且因为搜索字符串包含一个空格,导致“ Smith”被解释为单独的空格论据。

清单4返回了Fred Smith的所有属性。 如果只需要一个或两个属性,则检索一条记录的所有值都浪费了客户端和服务器资源。 将您要查看的属性添加到ldapsearch命令行的末尾,以仅请求这些属性。 清单5显示了如果您只想要Fred的电子邮件地址,上一个搜索的外观。

清单5.请求Fred Smith的电子邮件地址
$ ldapsearch -LLL -x '(cn=Fred Smith)' mail dn: cn=Fred Smith,ou=people,dc=ertw,dc=com mail: fred@example.com

mail属性被添加到清单4的命令行中,结果是找到的记录的可分辨名称以及所请求的属性。

ldapsearch在/etc/openldap/ldap.conf中查找以BASE开头的行,以确定搜索基础,但如果失败,则取决于服务器的defaultsearchbase设置。 搜索基础是树上开始搜索的点。 仅搜索属于搜索库(和搜索库本身)的子项的条目。 使用-b参数指定其他搜索基础,例如ldapsearch -x -b ou=groups,dc=ertw,dc=com以从ertw.com树中搜索组容器。

更改数据返回方式

LDAP可以存储二进制数据,例如图片。 jpegPhoto属性是在树中存储图片的标准方法。 如果从命令行检索属性的值,则会发现它是base64编码的。 -t参数用于将任何二进制属性保存到临时文件中。 清单6显示了如何使用此参数。

清单6.在文件系统上保存二进制属性
$ ldapsearch -LLL -x 'cn=joe*' jpegphoto | head dn: cn=Joe Blow,ou=people,dc=ertw,dc=com jpegPhoto:: /9j/4AAQSkZJRgABAQEASABIAAD//gAXQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q/9sAQw ... output continues for 1300+ lines ... $ ldapsearch -LLL -t -x '(cn=joe*)' jpegphoto dn: cn=Joe Blow,ou=people,dc=ertw,dc=com jpegPhoto:< file:///tmp/ldapsearch-jpegPhoto-VaIjkE $ file /tmp/ldapsearch-jpegPhoto-VaIjkE /tmp/ldapsearch-jpegPhoto-VaIjkE: JPEG image data, JFIF standard 1.01, comment: \ "Created with The GIMP\377"

清单6显示了两次搜索以“ Joe”开头的名称的任何人的情况,并且只检索了jpegPhoto属性。 第一次尝试不使用-t参数,因此jpegPhoto的值在控制台上以base64格式显示。 此功能的用途在命令行上是有限的,因此第二次尝试在命令行上指定-t 。 这次jpegPhoto的值是文件的URI(您可以使用-T选项更改目录)。 最后,检查返回的文件,实际上是可以查看的图片的二进制版本。

默认情况下, ldapsearch按照从服务器接收结果的顺序打印出结果。 您可以使用-S参数对输出进行排序,并向其传递要对其进行排序的属性的名称。 要对多个属性进行排序,请用逗号(,)分隔属性。

LDAP命令行工具

本节介绍了高级Linux专业人员(LPIC-3)考试301的主题304.2的材料。此主题的权重为4。

在本节中,学习如何:

  • 使用ldap *工具访问和修改目录
  • 使用slap *工具访问和修改目录

OpenLDAP提供了一些工具来操纵目录和管理服务器。 您已经熟悉ldapsearch上一节已对此进行了介绍 。 以ldap开头的命令适用于树的用户,以slap开头的命令适用于管理员。

树操作工具

本节中的命令用于通过更改数据或读取数据来操作树。 ldapsearch属于此类。 要使用这些命令,您需要向服务器进行身份验证。

ldapadd和ldapmodify

这两个命令用于在树中添加和更改条目。 您可能还记得第一篇教程LPI 301考试准备:
LDAP数据交换格式(LDIF)可用于在树中添加,更改和删除数据的系列概念,体系结构和设计 。 清单7显示了一些添加条目的LDIF的示例。

清单7.将条目添加到树的LDIF
dn: cn=Sean Walberg,ou=people,dc=ertw,dc=com objectclass: inetOrgPerson cn: Sean Walberg cn: Sean A. Walberg sn: Walberg homephone: 555-111-2222

清单7从对条目的专有名称的描述开始。 该条目将以ou=people,dc=ertw,dc=com容器ou=people,dc=ertw,dc=com并具有一个相对专有名称cn=Sean Walberg ,该名称是通过在第一个属性/值对之后拆分专有名称(DN)来获得的。 该条目的objectclassinetOrgPerson ,对于属于组织的任何人而言,这是一个相当通用的类型。 普通名称有两种变体,然后是姓氏,最后是家庭电话号码。

清单7隐含的是,这是对树的添加,而不是更改或删除。 回想一下LDIF文件可以指定changetype关键字,该关键字告诉读者如何处理数据。

ldapadd命令用于处理此LDIF文件。 如果清单7被存储为“ sean.ldif”,则ldapadd -x -D cn=root,dc=ertw,dc=com -w mypass -f sean.ldif是将新条目添加到树中的一种方法。 在前面的ldapsearch讨论中,应该熟悉命令的-x -D cn=root,dc=ertw,dc=com -w mypass部分,这是使用简单身份验证和功能强大的root身份验证树的方法DN。 本节中的所有ldap命令都使用相同的参数来对树进行身份验证,因此您将看到这种形式的重复。

ldapadd被实现为ldapmodify的符号链接,并且当被称为ldapadd被解释为ldapmodify -a-a参数告诉ldapmodify假定使用默认的changetype add changetype ,该类型用于将新条目添加到树中。 当称为ldapmodify ,假设默认的changetypechangetype操作。

ldapadd (和ldapmodify )是一种将批量数据加载到服务器而无需关闭的有效方法。 LDIF文件可以包含许多操作,从编写任何其他数据源来生成LDIF往往比编写自定义代码来解析数据源并直接通过LDAP添加它要容易得多。

ldapdelete

ldapdeleteldapdelete从树中删除一个条目。 所有条目在树中均由其DN唯一标识; 因此, ldapdelete会按DN(而不是任何其他查询)删除条目。

除了已经讨论过的身份验证参数外, ldapdelete可以使用其DN列表从命令行或文件中删除。 要从命令行删除,只需将DN附加到命令行,例如ldapdelete -x -D cn=root,dc=ertw,dc=com -w mypass "cn=Sean Walberg,ou=people,dc=ertw,dc=com" 。 如果要删除的条目很多,则可以将DN(每行一个)放在文件中,然后将ldapdelete指向带有-f filename

请注意,您还可以通过LDIF和ldapadd/ldapmodify命令删除条目。 ldapdelete命令在许多情况下更方便,但不是删除条目的唯一方法。

ldapmodrdn

ldapmodrdn命令更改对象的相对专有名称,即DN中的第一个属性/值对。 这有效地重命名了树的当前分支中的条目。 与LDIF moddn changetype不同,此命令只能重命名条目,而不能将其移动到树上的其他位置。

此命令的用法很简单:为其提供身份验证凭据,条目的DN和新的RDN。 清单8显示了一个从“ Joe Blow”重命名为“ Joseph Blow”的帐户。

清单8.重命名一个条目
$ ldapmodrdn -x -D cn=root,dc=ertw,dc=com -w dirtysecret \ 'cn=Joe Blow,ou=people,dc=ertw,dc=com' 'cn=Joseph Blow' $ ldapsearch -LLL -x '(cn=Joseph Blow)' dn: cn=Joseph Blow,ou=people,dc=ertw,dc=com objectClass: inetOrgPerson sn: Blow cn: Joe Blow cn: Joseph Blow

请注意,旧的RDN仍显示为属性,即cn: Joe Blow 。 如果要删除旧的RDN,请在命令行中添加-r 。 这与在您的LDIF代码中添加deleteoldrdn: 1相同(奇怪的是,这是LDIF的默认行为,而不是ldapmodrdn )。

ldapcompare

ldapcompare允许您将预定值与LDAP树中某处存储的值进行比较。 一个示例将显示其工作原理。

清单9.使用ldapcompare
$ ldapcompare -x "cn=Sean Walberg,ou=people,dc=ertw,dc=com" userPassword:mypassword TRUE $ ldapcompare -x "cn=Sean Walberg,ou=people,dc=ertw,dc=com" userPassword:badpassword FALSE

在清单9中,运行ldapcompare命令。 处理完身份验证参数后,最后两个参数是要检查的DN和要检查的属性和值。 上面两个示例中的DN都是“ cn = Sean Walberg”的列表。 两种情况下都要检查的属性是userPassword属性。 给出正确的密码后, ldapcompare输出字符串TRUE和错误代码6。如果给定的值与条目中的值不匹配,则将FALSE发送到控制台,并返回错误代码5。 -z选项可防止打印任何内容。 呼叫者应使用错误代码来确定检查是否成功。

即使清单9中的示例检查了密码,也可以使用任何属性,包括objectClass 。 如果属性具有多个值,例如多个公用名或objectClass es,则如果其中一个匹配,则比较成功。

ldapwhoami

ldapwhoami允许您测试对LDAP服务器的身份验证,并确定您在服务器上针对哪个DN进行身份验证。 只需使用常规身份验证参数调用ldapwhoami ,如清单10所示。

清单10. ldapwhoami的演示
$ ldapwhoami -x anonymous Result: Success (0) $ ldapwhoami -x -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" -w mypassword dn:cn=Sean Walberg,ou=people,dc=ertw,dc=com Result: Success (0) $ ldapwhoami -x -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" -w badpass ldap_bind: Invalid credentials (49)

清单10中的第一个示例显示了没有用户名或密码的绑定。 Ldapwhoami返回anonymous字符串以表示匿名绑定,还返回状态行以指示认证成功。 第二个示例绑定为用户的DN。 这次返回的DN与通过身份验证的DN相同。 最后,使用无效的凭证进行绑定尝试。 结果是问题的解释。

Ldapwhoami帮助您排除服务器配置故障,并有助于手动验证密码。 访问列表可能会妨碍ldapsearch ,因此使用ldapwhoami可以帮助您确定问题是凭据还是访问列表。

管理工具

slap开头的命令仅供管理员使用,它们直接在数据库文件上运行,而不是通过LDAP协议运行。 因此,通常需要具有root用户才能使用这些命令,并且在某些情况下,还必须关闭服务器。

拉帕克

Slapacl是一种实用程序,使管理员可以针对绑定DN,条目和属性的各种组合测试访问列表。 例如,您将使用slapacl进行测试以查看特定用户对另一用户的属性具有什么访问权限。 此命令必须以root用户身份运行,因为它是直接读取数据库和配置文件,而不是使用LDAP。

通过一个例子可以最好地描述slapacl的用法。 在清单11中,管理员正在测试以查看用户使用自己的密码具有的访问权限,然后再实施ACL,然后在实施应将访问限制为更安全的ACL之后再次进行检查。

清单11.使用slapacl确定ACL更改的影响
# slapacl -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" \ -b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword authcDN: "cn=sean walberg,ou=people,dc=ertw,dc=com" userPassword: read(=rscxd) ... change slapd.conf ... # slapacl -D "cn=Sean Walberg,ou=people,dc=ertw,dc=com" \ -b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword authcDN: "cn=sean walberg,ou=people,dc=ertw,dc=com" userPassword: =wx # slapacl -D "cn=Joseph Blow,ou=people,dc=ertw,dc=com" \ -b "cn=Sean Walberg,ou=People,dc=ertw,dc=com" userPassword authcDN: "cn=joseph blow,ou=people,dc=ertw,dc=com" userPassword: =0

slapacl命令必须提供两条信息。 第一个是绑定DN,它是您要测试其访问权限的用户的DN。 第二部分是您要测试的条目的DN。 绑定DN用-D指定,目标DN用-b设置。 您可以选择通过在测试的最后添加一个属性来将其限制为单个属性(如清单11中的userPassword示例)。 如果您未指定属性,则将在条目中收到每个属性的结果。

在清单11中的第一个命令中,管理员正在测试cn=Sean Walberg条目,以查看他对自己的密码具有什么访问权限。 结果是读取访问。 回想一下本系列的第三篇教程LPI 301考试准备:
Configuration ,用户应该能够根据其userPassword属性进行写入和身份验证,但不能读取该属性。 更改ACL之后,将再次执行测试,并且只有写和认证权限可用。 最后,进行测试以查看Joseph Blow对Sean Walberg密码的访问权限; 结果是他无权访问。

Slapacl是测试ACL更改结果和调试ACL问题的有效方法。 这特别有效,因为它直接从数据库和slapd.conf中读取,因此对slapd.conf所做的任何更改都会反映在slapacl的输出中,而无需重新启动slapd

lap

Slapcat将LDAP树的内容作为LDIF转储到标准输出,或者如果使用-l filename则转储到-l filename 。 您可以选择使用-s选项提供起始DN,或使用-a传递查询过滤器。

Slapcat直接在数据库上运行,并且可以在服务器仍在运行时运行。 仅支持bdb数据库类型。

slapadd

Slapadd是直接在后端数据库上运行的批量导入工具,这意味着必须停止slapd才能使用此工具。 它设计用于slapcat的输出。 Slapadd对输入数据执行的验证不多,因此最终可能会得到树的分支。 如果未导入某些容器对象,则会发生这种情况。

slapadd的输入是一个LDIF文件,例如slapcat生成的slapcat 。 slapadd(8C)联机帮助页建议使用ldapadd代替,因为在线变量提供了数据验证。 该手册页还指出,不能保证以与ldapadd兼容的方式对slapcat的输出进行排序(容器对象可能在输出中的子项之后出现,因此将无法通过验证)。 在slapcat使用任何过滤器也可能导致重要数据丢失。 因此,仅应将slapadd与slapcat生成的LDIF slapcat使用,并将ldapadd用于其他任何LDIF。

关闭LDAP服务器之后,您只需运行slapadd命令并将LDAP输出通过管道传输到标准输入。 如果要读取文件,请使用-l选项。 与slapcat ,仅支持bdb数据库类型。

slappasswd

Slappasswd用于生成哈希密码,以存储在目录或slapd.conf中。 通常的用法是对slapd.conf中的rootdn帐户使用哈希密码,这样,任何查看配置文件的人都无法确定该密码。 如果您不提供任何参数, Slappasswd将提示您输入密码以进行哈希处理,如清单12所示。

清单12.使用slappasswd哈希密码
$ slappasswd New password: Re-enter new password: {SSHA}G8Ly2+t/HMHJ3OWWE7LN+GRmZJAweXoE

然后,您可以将整个字符串复制到slapd.conf中的rootpw行。 Slapd识别密码的格式,并且知道{SSHA}意味着{SSHA}是SHA1哈希。 读取slapd.conf的任何人都不会学习root密码。

slappasswd生成的哈希还可以在与ldapaddldapmodify一起使用的LDIF文件中使用,这将允许您存储密码的安全单向哈希,而不是安全性较低的纯文本或base64编码版本。

拍击指数

您可能还记得本系列的第三篇教程LPI 301考试准备中的 slapindex
配置 。 在slapd.conf中使用index关键字创建或更改索引之后,必须重新构建索引,否则slapd将返回错误的结果。 要重建索引,请停止slapd并运行slapindex 。 这可能要花一些时间,具体取决于数据库中的条目数,或者如联机帮助页中所述:“此命令为用户提供了充足的机会来获取和饮用自己喜欢的饮料。”

最残酷的

Slapdtest只是检查您的slapd.conf文件是否正确。 这很有用,因为如果您要使用错误的配置文件重新启动slapd ,则在您修复该文件之前它无法启动。 Slaptest ,您可以在重新启动之前对配置文件执行完整性检查。

使用slaptest就像输入slaptest一样简单。 如果slapd.conf是正确的,您将看到config file testing succeeded 。 否则,您将收到一条解释该问题的错误消息。

Slaptest还检查操作所需的各种文件和目录的存在。 但是,在测试过程中,作者能够找到一些通过slaptest配置文件错误,但仍然会导致slapd失败。

白页

本部分介绍了高级Linux专业人员(LPIC-3)考试301的主题304.3的材料。此主题的权重为1。

在本节中,学习如何做:

  • 计划白页服务
  • 配置白页服务
  • 配置客户端以从白页服务检索数据

白板服务使电子邮件客户端可以从LDAP数据库检索联系信息。 通过保持公用属性名称(例如inetOrgPerson objectClass提供的属性名称),可以获得与电子邮件客户端的最大兼容性。 例如,Microsoft Outlook和Evolution都使用mail属性存储用户的电子邮件地址,并使用givenNamedisplayNamecnsn属性存储各种形式的名称。

为LDAP目录配置电子邮件客户端

从理论上讲,任何支持LDAP的邮件客户端都可以使用您的树。 您将需要在客户端中配置以下信息:

  • LDAP服务器的地址或主机名
  • 要绑定的凭据,除非您匿名绑定
  • 要搜索的基本DN
  • 搜索过滤器,例如(mail = *),用于清除没有电子邮件地址的帐户(可选)

将以上信息输入到电子邮件客户端后,您应该可以搜索联系人。

为LDAP目录配置Microsoft Outlook

要配置Microsoft Outlook(已在Outlook 2003上测试),请选择“ 工具> 电子邮件帐户 。 您将看到一个类似于图2的对话框。

图2.选择要添加的帐户类型
选择要添加的帐户类型

选择添加新目录的选项,然后单击下一步 。 然后,您将看到图3中的对话框。

图3.选择要添加的目录类型
选择要添加的目录类型

选择添加新的LDAP目录的选项,然后单击下一步 。 然后,您将看到图4中的对话框。

图4.指定LDAP服务器详细信息
指定LDAP服务器详细信息

在图4所示的对话框中输入有关LDAP服务器的相关详细信息。所示示例使用用户凭据绑定到树。 如果服务器的配置支持匿名访问,则可以使用匿名访问。

输入基本详细信息后,单击More Settings ,将提示您输入更多信息,如图5所示。

图5.将高级选项添加到LDAP服务器配置
Adding advanced options to the LDAP server configuration

Figure 5 shows more options, the important one being the search base. Click OK after entering the search base, and you will be returned to the main Outlook screen.

You may now use the LDAP database wherever you are prompted to look for users by selecting the server name from the "Show Names From" field.

摘要

In this tutorial you learned how to use your directory through searching and the command-line tools. You also learned how to configure e-mail clients to use the directory to store contact information.

Searching the LDAP tree requires you to build a query filter. The various operators that are used in a query are outlined in Table 3.

Table 3. LDAP Search Operators
操作员 描述
= Tests for equality (cn=Walberg)
* Tests for the existence of an attribute (cn=*)
Substring search (sn=Walb*)
& Logical AND (&(condition1)(condition2))
| Logical OR (|(condition1)(condition2))
Logical NOT (!(mail=*))
~= "Sounds-like" match (cn~=Shawn)
<= and >= Range match (pagesPerMinute >= 20)

Several utilities are provided to use the directory, such as ldapsearch for searching, and ldapadd and ldapmodify for adding and changing data. The tools that start with ldap operate through the LDAP protocol and require credentials to log in to the server. The tools that start with slap are used by the administrator and operate directly on the database.

This tutorial and the previous ones in the 301 series have focused on managing and working with an LDAP server. The next tutorial in the series will look at various applications including e-mail servers, and show how to use LDAP as the data source.


翻译自: https://www.ibm.com/developerworks/linux/tutorials/l-lpic3304/index.html

scala中:::的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值