数据迁移:索引重建_主题305:集成与迁移

数据迁移:索引重建

在你开始前

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

关于本系列

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考试准备:
整合与迁移
(本教程)了解如何使用LDAP作为系统和应用程序的数据源。 请参阅详细目标
主题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与身份验证和其他UNIX服务集成的所有信息。

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

目标

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

表2.集成和迁移:本教程涵盖的考试目标
LPI考试目标 客观体重 客观总结
305.1
LDAP与PAM和NSS集成
2 将核心系统身份验证与LDAP集成在一起。
305.2
NIS到LDAP的迁移
1个 计划并实施NIS迁移策略,包括将NIS部署到LDAP网关。
305.3
将LDAP与UNIX服务集成
1个 使用LDAP服务器作为SSH,FTP,HTTP和其他服务的数据源。
305.4
将LDAP与Samba集成
1个 使用您的LDAP服务器作为Samba的数据源。
305.5
将LDAP与Active Directory集成
2 将您的LDAP服务器与Active Directory服务一起使用。
305.6
将LDAP与电子邮件服务集成
1个 将您的电子邮件服务与LDAP目录集成。

先决条件

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

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

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

系统要求

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

LDAP与PAM和NSS集成

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

在本节中,学习如何:

  • 配置NSS以从LDAP检索信息
  • 配置PAM以使用LDAP进行身份验证
  • 在各种UNIX环境中配置PAM模块

PAM和名称服务交换(NSS)功能以传统的UNIX方式从其实现中抽象出身份验证和查找的各种组件,这使管理员可以更改后端数据存储而无需重新编译任何应用程序。 例如,由于NSS是作为C库的一部分实现的,因此从传统的基于/ etc / passwd的身份验证转移到网络信息服务(NIS)是透明的。 应用程序使用诸如getpwent(3)之类的标准库调用来查找用户,但是通过一些配置魔术,数据被重定向到另一个存储,例如NIS。

PAM稍有不同,因为在编写应用程序时必须牢记PAM。 管理员可以使用一组丰富的库来自定义PAM感知应用程序的行为,例如需要特定的组成员身份和登录时间才能成功进行身份验证。

PAM和NSS可以协同工作以进行用户身份验证。 支持PAM的应用程序指示PAM检查用户的凭据。 除其他限制外,管理员还可以配置PAM通过NSS工具检查密码。 PAM仅用于密码和影子数据库,不用于组和主机之类的其他数据库。

来自PADL软件的开源软件包提供了对PAM和NSS的LDAP支持。

配置NSS以使用LDAP

NSS功能在C库中实现,作为对获取信息的传统库调用的钩子。 C库提供了诸如getpwent功能来获取用户信息和gethostbyname(3)用于主机信息的功能,这些功能通常分别实现为对/ etc / passwd和/ etc / hosts的查找。 管理员可以通过配置NSS来强制主机名查找也使用域名服务(DNS),这意味着应用程序不知道更改。

了解NSS

表3概述了NSS处理的数据库。 大多数数据库在/ etc中都有一个对应的文件,传统上是在其中存储数据。

表3. NSS数据库
数据库名称 描述
aliases sendmail的邮件别名,用于将一个本地地址转发(别名)到另一个地址。
ethers 将以太网地址映射到IP地址。 由于地址解析协议(ARP)的可用性,再也很少见了。
group 包含组列表和属于它们的用户。
hosts 将IP地址映射到主机名。
netgroup 用于将服务器分组在一起。 最常用于NIS和网络文件系统(NFS)安全。
networks 网络名称到数字的映射。 很少使用,因为知道网络名称几乎没有价值。
passwd 存储用户帐户信息,例如名称,用户标识,描述,主要组,主目录,有时还包括密码。
protocols 将IP协议映射到其名称。
publickey 用于分发NFS和NIS +的密钥。
rpc 将远程过程调用(RPC)函数名称映射为数字。
services 将TCP和UDP服务名称映射到端口号。
shadow 受保护的加密密码文件。 通常,/ etc / passwd中的密码字段存储在此文件中,以确保安全。

NSS在/ etc / nsswitchconf中配置,并且在表3中每个数据库包含一行。清单1显示了一个示例nsswitch.conf。

清单1.样例nsswitch.conf
passwd: files nis shadow: files nis group: files nis hosts: files nis dns

清单1配置了四个映射:passwd,shadow,group和host。 映射的名称后跟一个冒号(:),然后是访问数据的方式的有序列表。 清单1中的前三行都是相同的:它们首先检查文件中所请求的信息,然后检查NIS,有时也称为黄页 。 仅在文件中未找到任何内容时,才检查NIS。 该示例的最后一行检查文件(/ etc / hosts),NIS,然后检查DNS是否有任何主机请求。

nsswitch.conf中可用的方法在/ lib中有一个对应的库,以libnss_ 。 例如,文件功能可在/lib/libnss_files-2.5.so中找到(版本号并不重要,因为它由动态链接器ld-linux.so解析)。

将LDAP引入NSS

在前面讨论了动态库和nsswitch.conf的格式之后,毫不奇怪,与NSS的LDAP集成是通过名为libnss_ldap的共享库处理的,并通过/etc/nsswitch.conf中的ldap关键字进行引用。 此共享库从/etc/ldap.conf中获取其配置(不要与命令行客户端/etc/openldap/ldap.conf的OpenLDAP配置文件相混淆)。 清单2显示了一个示例ldap.conf。

清单2.用于配置libnss_ldap的示例ldap.conf
# Server IP address (or space-separated addresses) host 192.168.1.138 # Search base base dc=ertw,dc=com # optional: bind credentials binddn: cn=nssldap,dc=ertw,dc=com bindpw: letmein # If root is making the request, use this dn instead # The password is stored in /etc/ldap.secret and only readable by root rootbinddn cn=root,dc=ertw,dc=com # Point the passwd, shadow, and group databases at a DN # the ?one defines the scope nss_base_passwd ou=People,dc=ertw,dc=com?one nss_base_shadow ou=People,dc=ertw,dc=com?one nss_base_group ou=Group,dc=ertw,dc=com?one # Don't look for secondary groups for any of these users nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd

除了清单2中显示的/etc/ldap.conf的内容外,还需要在/etc/nsswitch.conf中的passwd,shadow和group行中添加关键字ldap 。 始终确保将files作为第一个条目。 否则,您可能会发现自己正在等待关闭的服务器超时-甚至可能被锁定在系统之外。 (如果由于nsswitch.conf问题而被锁定,请引导至单用户模式,将nsswitch.conf重置为files ,然后重新启动。)

可以对所有数据库使用LDAP,但是这里列出的三个是有用的。 其他地图很少更改,应单独管理。 hosts数据库除外,它可以使用LDAP,尽管DNS是更好的选择。

测试一下

如果已正确配置了nsswitch.conf和ldap.conf,则只要具有以下属性,就应该能够使用LDAP用户登录:

  • uid :登录名
  • uidNumber :数字用户ID
  • gidNumber :主要组编号
  • homeDirectory :用户的主目录
  • userPassword :用{crypt}例程加密的用户密码(使用slappasswd生成此密码)

这些属性以及更多属性是通过posixAccount objectClass添加的。

要进行测试,请尝试以LDAP树中的用户身份登录,而不要以本地密码文件中的用户身份登录。 您也可以使用getent passwd命令查看NSS知道的所有用户条目。 如果getent有效但登录无效,则您的userPassword属性可能不正确。

如果您已经在客户端上验证了配置,并且NSS和LDAP仍然无法一起使用,请在OpenLDAP服务器上启用stats级别的日志记录,并查看服务器是否正在查看您的查询,以及是否允许查询。

配置PAM以使用LDAP

PAM与NSS非常相似,它从实际实现中抽象出一组库调用。 与NSS不同,PAM不会替换现有的UNIX调用。 相反,它提供了一组可供应用程序使用的新调用。

了解PAM

PAM被实现为应用程序使用的库。 应用程序调用此库以使用PAM管理功能,以检查身份验证,帐户管理,会话管理和密码管理。

检查身份验证是PAM的主要目的。 该应用程序询问PAM库是否对用户进行了身份验证。 PAM库依次遵循系统管理员制定的规则,以提示用户输入密码或执行许多其他检查。

在用户提供有效的凭据之后运行帐户管理,并负责检查是否允许登录。 某些时候或某些应用程序可能不允许登录。

会话管理使应用程序有机会在成功登录后设置环境。 通常需要给登录到控制台的用户一些额外的权限,例如使用本地CDROM或其他设备。 这是在会话管理级别完成的。

最后,密码管理提供了一种灵活的方式来更改密码。 您将很快看到,该功能使用户可以通过熟悉的passwd(1)程序更改其LDAP密码。 PAM密码管理还允许您指定独立于密码后端运行的密码强度策略。

要为服务配置PAM,必须在/etc/pam.d中创建以该服务命名的文件,例如sshd服务的/etc/pam.d/sshd。 这不是一成不变的规则,因为应用程序指定了自己的PAM服务名称。 如有疑问,请使用二进制文件的名称,并检查日志中是否有错误。

/etc/pam.d中的每个配置文件都为每个PAM管理功能指定了指令的有序列表。 文件中的每一行都是function control module arguments形式。 该功能是管理功能,使用关键字authaccountsessionpassword

该控件指定如何使用要评估的指令的返回值,并且是以下关键字之一:

  • required -如果功能成功,则此检查必须成功。 如果此检查失败,则PAM将继续检查给定功能的其余指令,但结果毫无意义。
  • requisite -如果功能成功,则此检查必须成功。 如果此检查失败,则PAM将停止检查其余说明,并返回失败信息。
  • sufficient -如果此检查成功,则假定先前的“必需”元素均未失败,则处理将停止并且函数将成功返回。 如果此检查失败,则忽略该失败并继续处理。
  • optional -检查结果将被忽略。

模块和参数本身实现检查。 同一模块可以实现所描述的一个或多个功能,因此您可能会多次看到同一模块。 您将经常使用的一个模块是pam_stack ,它使您可以从其他文件调用指令堆栈。 清单3显示了使用pam_stack的PAM文件。

清单3.使用pam_stack调用其他指令栈
auth required pam_nologin.so auth required pam_stack.so service=system-auth account required pam_stack.so service=system-auth session required pam_stack.so service=system-auth password required pam_stack.so service=system-auth

清单3显示了PAM文件的格式。 auth函数有两行,这两项都是必需的,因此必须成功才能成功进行身份验证。 第一行auth调用pam_nologin ,如果/ etc / nologin文件存在时非root用户尝试登录,其工作将失败。 下一条auth行调用pam_stack模块,并将其传递给service=system-auth 。 然后,pam_stack.so读取/etc/pam.d/system-auth的内容,并检查auth函数下的所有指令。 如果返回成功,则pam_stack将成功结果返回到清单3中的文件。

其他三个功能( accountsessionpassword仅引用pam_stacksystem-auth服务。 如果system-auth的各个功能成功返回,则结果被视为成功。

许多系统具有一组通用的身份验证例程,因此pam_stack用于大多数文件中,而system-auth(或等效文件)包含所有有趣的部分。 在本节的其余部分中,system-auth文件将是用于将LDAP注入PAM进程的文件。

将LDAP引入PAM

NSS和PAM模块都使用/etc/ldap.conf进行配置,因此,如果您按照以下说明进行操作,则意味着PAM-LDAP系统可以正常工作了。 可以将NSS和PAM一起使用,以便支持PAM的应用程序和旧版应用程序都可以通过LDAP进行身份验证。 PAM在NSS之上提供了一些新功能,其中包括:

  • 用户密码更改
  • 身份验证要求的更精细配置
  • 支持更多密码加密类型
  • 集中管理用户帐户

确保pam_password md5在/etc/ldap.conf中,并删除任何其他pam_password行(如果存在)。 这告诉pam_ldap库在更改密码时,先在本地使用Message Digest 5(MD5)对密码进行哈希处理,然后再将其发送到LDAP服务器。

编辑/etc/pam.d/system-auth(或等效文件)以添加对pam_ldap的引用,如清单4所示。该行应在对pam_unix任何引用之后(以便本地帐户优先于LDAP帐户),但是在任何对pam_allowpam_deny引用(提供默认允许或拒绝)之前。

清单4.使用pam_ldap新system-auth
auth sufficient pam_unix.so nullok try_first_pass auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so broken_shadowaccount sufficient pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session required pam_limits.so session required pam_unix.so session optional pam_ldap.so

粗线显示了对PAM配置文件的补充。 请注意pam_unixaccount功能中增加了broken_shadow 。 这样可以确保pam_unix.so在用户没有影子条目的情况下不会返回失败(由于帐户位于LDAP中,所以没有)。

pam_ldapauth模块的use_first_pass选项强制pam_ldap.so使用从pam_unix.so获得的密

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值