WEB开发网
开发学院操作系统Linux/Unix 扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能... 阅读

扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能

 2008-11-10 08:27:26 来源:WEB开发网   
核心提示:本文示例源代码或素材下载 在集中式 LDAP 环境中管理用户并控制他们的访问权限,是异类环境中一项具有挑战性的任务,扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能,由于缺乏 LDAP 服务器的模式支持,所以某些平台可能失去它们的 OS 特定功能,对于从 Windows 创建的那些用户和组(当它们

本文示例源代码或素材下载

在集中式 LDAP 环境中管理用户并控制他们的访问权限,是异类环境中一项具有挑战性的任务。由于缺乏 LDAP 服务器的模式支持,所以某些平台可能失去它们的 OS 特定功能。本文为一些非 IBM ® LDAP 服务器提供了相应的解决方案,以便通过为这些服务器类型提供 AIX 模式,以及使用该模式提供用于更新这些 LDAP 服务器类型的步骤,从而支持全部的 AIX ® 用户管理功能。

范围、假设和环境

本文的内容包括使用 AIX LDAP 模式扩展某些非 IBM LDAP 服务器,以及对 AIX 进行配置以便能够与这些服务器一同工作。本文假设读者在目录服务概念和管理经验方面具有中级到高级的知识水平。

本文中所描述的解决方案已经经过了测试,并且经过证实可以在我们的测试环境中正常使用。对于那些需要使用非 IBM LDAP 服务器支持 AIX 系统的组织来说,本文提出的工作示例是非常有价值的。我们建议,在生产环境中实现该解决方案之前,应该先在测试环境中进行试验,以确保它能够正常地工作、并且能够满足您的需要。请注意,本文所描述的解决方案和步骤是按原样提供的,如果需要,可以对它们进行更新,并且它们没有正式获得 IBM 的支持。

引言

使用目录存储用户和组信息的优点是,可以将多个数据库集中于单个位置,以便降低用户和组的管理复杂性。许多供应商都推出了他们自己的 LDAP 解决方案,以便充分地支持目录服务(这项技术在过去十多年中已经非常成熟)。目录中的对象由对象类和它们的相关属性来进行定义。术语“LDAP 模式”通常指的是 LDAP 属性和对象类的集合。

RFC 2307 定义了网络信息服务 (NIS) 模式的标准集合,其中包括用户、组和其他的 NIS 对象。AIX 支持 RFC 2307,并且因此与 RFC 2307 LDAP 环境完全兼容。除了在 RFC 2307 中定义的属性之外,AIX 还提供了一些附加的属性以支持扩展的 AIX 用户功能。第三方 LDAP 服务器可能没有提供这些附加的 AIX 属性,并且如果将 AIX 配置为这种服务器的客户端,那么 AIX 将无法在该环境中设置扩展的用户特定属性。导致这个问题的原因是,这些服务器中缺乏 AIX LDAP 模式的支持。通过使用 AIX LDAP 模式扩展这些 LDAP 服务器可以实现 AIX 用户管理的支持,本文说明了如何让非 IBM LDAP 服务器以类似于 AIX LDAP 服务器的方式工作。

术语

IBM LDAP 模式IBM 定义的完整的模式集
AIX LDAP 模式支持 AIX LDAP 功能的 IBM 模式子集
SFU 模式Windows Service For UNIX 包中所包括的 Windows® UNIX® 支持模式。
Windows 2003 R2 模式Windows 2003 R2 CD 中包括的内置 UNIX 支持模式。
支持 UNIX 的用户和组指的是通过在用户(或者组)属性面板的 UNIX 选项卡中选择一个 UNIX 域,在 Windows 中启用用户和组以支持 UNIX 系统的过程。

软件要求

用于 SunOne Directory 服务器的 IBM AIX 5.2 及更高的版本。

用于 Microsoft® Windows Active Directory(使用 Microsoft Service For UNIX (SFU) 模式)的 IBM AIX 5.3 TL 05 及更高的版本。

用于 Microsoft Windows Active Directory(使用 R2 模式)的 IBM AIX 5.3 TL 06 及更高的版本。

AIX Base CD 和 Expansion Pack CD 中包括的 IBM Tivoli® Directory Server 软件。只需要客户端文件集。

可以从本文所引用的链接处获得 AIX LDAP 模式。

测试的 LDAP 服务器

本文中所描述的解决方案已经在下列的目录服务器中进行了测试:

运行于 Solaris 10 中的 SunOne LDAP 服务器

运行于 Windows 2000 和 2003(使用 Microsoft Service For UNIX (SFU) 版本 3.5 的模式)中的 Microsoft Active Directory (AD)。

运行于 Windows 2003 R2 中的 Microsoft Active Directory(使用 Microsoft Windows 2003 R2 中包括的模式)。

对 SunOne LDAP 服务器进行配置以支持 AIX 属性

首先必须对 SunOne LDAP 服务器进行配置,并且使其处于运行状态。更多有关配置 SunOne LDAP 服务器的细节,请参见参考资料部分中相关 SunOne 文档的信息。

获得 AIX LDAP 模式

用于 IPlanet Directory V5.0 的 AIX LDAP 模式文件 aixSchemaForNS5.ldif,是下载文件 non-IBM_LDAP.zip 的组成部分。

使用 AIX LDAP 模式足以支持 AIX LDAP 用户管理功能,并且就本文而言,它是建议使用的模式。如果您还需要更多 IBM LDAP 模式以支持其他的应用程序,那么您可以从 http://www.ibm.com/servers/eserver/iseries/ldap/schema/ 下载全部的 IBM LDAP 模式。

使用 AIX LDAP 模式扩展 SunOne LDAP 服务器

将 AIX 模式文件 aixSchemaForNS5.ldif 复制到 Solaris LDAP 服务器。确保已经启动了 LDAP 服务器,并运行 ldapmodify命令以加载该模式:

# ldapmodify -h (LDAPserver name) -D (Binddn) -w (bind passwd) -c -f (schema file)

例如:

#ldapmodify -h myServer.myCompany.com -D "cn=directory manager" -w adminpwd -c -f aixSchemaForNS5.ldif

使用 AIX LDAP 模式启用 SunOne 用户和组

AIX LDAP 模式包括用户的 aixAuxAccount 对象类和组的 aixAuxGroup 对象类。将 AIX LDAP 模式添加到 SunOne LDAP 服务器,以使该模式可供使用,但这并不意味着管理员可以将 AIX 属性设置为现有的 SunOne 用户和组。还必须完成一个额外的步骤,即必须使用 AIX 扩展的对象类对用户和组进行更新。

在 SunOne LDAP 服务器中定义的每个用户或者组对象都具有一个列表,其中列出了描述该对象的对象类。您可以运行 ldapsearch 命令,以列出特定用户的对象类。下面是一个示例输出,显示了用户 foo 的对象类:

#ldapsearch -h (server) -D (binddn) -w (bindpwd) -b dc=mydomain,dc=com uid=foo
objectclass
uid=foo,ou=People, dc=mydomain,dc=com
objectclass=top
objectclass=person
objectclass=organizationalPerson
objectclass=inetorgperson
objectclass=posixAccount

在这个示例中,即使在使用 AIX LDAP 模式对 SunOne LDAP 服务器进行更新之后,也不会使用 aixAuxAccount 对象类自动地对 SunOne LDAP 服务器中的用户对象进行更新。类似地,也不会使用 aixAuxGroup 对象类自动地对组对象进行更新。因此,为用户 foo 设置 AIX 属性的操作将失败。

本文的作者并不清楚是否可以使用一些现有的工具来更新所有 SunOne LDAP 用户和组对象类。SunOne LDAP 服务器管理员可能需要手动地进行这项操作。

下面是一个示例用户模板 ldif 文件,该文件可用于使用 aixAuxAccount 对象类更新用户。只需将 DN 值(斜体内容)替换为实际的用户 DN;将更改保存到一个文件(例如,userentry.ldif),然后运行 ldapmodify 以便将更改加载到 SunOne 服务器。您需要为每个 SunOne 用户进行这项操作。要查找 SunOne LDAP 用户的 DN,您可以在 Solaris 中使用 ldaplist 命令。

dn: uid=foo,ou=People,dc=mydomain,dc=com
changetype: modify
add: objectclass
objectclass: aixAuxAccount
  
# ldapmodify -h (server) -D (binddn) -w (bindpwd) -f userentry.ldif

类似地,您将需要为每个 SunOne 组进行同样的操作步骤,并使用下面的示例组模板文件:

dn: cn=grp,ou=group,dc=mydomain,dc=com
changetype: modify
add: objectclass
objectclass: aixAuxGroup

使用上面的模板,您可以编写一个脚本以查询 SunOne LDAP 服务器的所有用户 DN,并使用该模板更新每个用户。

在对 SunOne LDAP 服务器中的每个用户进行修改之后,对任何用户再次运行 ldapsearch 命令,以验证已经将 aixAuxAccount 添加到了该用户条目。

# ldapsearch -h (server) -D (binddn) -w (bindpwd) -b dc=mydomain,dc=com uid=foo1
objectclass
uid=foo1,ou=People, dc=mydomain,dc=com
objectclass=top
objectclass=person
objectclass=organizationalPerson
objectclass=inetorgperson
objectclass=posixAccount
objectclass=aixAuxAccount

配置或者重新配置 AIX LDAP

如果已经将您的 AIX 系统配置为 SunOne LDAP 服务器的 LDAP 客户端,那么管理员必须使用 mksecldap 命令重新配置 AIX。mksecldap 命令可以确定 SunOne LDAP 服务器中的哪些用户具有 AIX LDAP 模式,并挑选正确的属性映像进行使用,然后将信息保存到 /etc/security/ldap/ldap.cfg 中。

要将 AIX 配置或者重新配置为 Solaris LDAP 服务器的 LDAP 客户端,可以在 AIX 中运行 mksecldap 命令:# mksecldap -c -h (server) -a (binddn) -p (bindpwd) -A ldap_auth

如果希望使用 unix_auth,那么您可以从这个示例中省略 "-A ldap_auth"。

通过运行下面的命令,验证使用 SunOne LDAP 服务器配置了 LDAP 客户端:# ls-secldapclntd

ls-secldapclntd 命令显示了用户对象类的 aixAuxAccount 对象类和组对象类的 aixAuxGroup 对象类。

为现有的用户设置 AIX 属性

在完成配置工作之后,您可以使用 AIX 的 chuser 和 chgroup 命令为 SunOne LDAP 用户和组设置 AIX 属性。在下面的示例中,我们将 SunOne 用户 foo 的 nofiles AIX 属性设置为 1000:# chuser -R LDAP nofiles=1000 foo

在用户 foo 登录 AIX 之后,运行 ulimit 命令以验证他的文件描述符限制是否设置为 1000:$ ulimit -a
time(seconds)    unlimited
file(blocks)     2097151
data(kbytes)     131072
stack(kbytes)    32768
memory(kbytes)    32768
coredump(blocks)   2097151
nofiles(descriptors) 1000
threads(per process) unlimited
processes(per user) unlimited

从 AIX 创建新的 SunOne 用户

您还可以使用 mkuser 和 mkgroup 命令,从 AIX 创建新的带有 AIX 特定属性的 SunOne LDAP 用户或者组。从 AIX 创建的用户或者组是与 RFC 2307 相兼容的,并且 Solaris 可以识别该用户或组。

例如: # mkuser -R LDAP nofiles=1000 test1

或者,您可以首先使用 mkuser -R LDAP test1 创建用户,然后使用 chuser 命令设置 AIX 属性。

mkuser 和 mkgroup 命令分别将 aixAuxAccount 对象类和 aixAuxGroup 对象类添加到它们所创建的用户和组。这些用户和组完全支持 AIX,并且不需要再次使用 AIX LDAP 模式来启用它们。

如果您无法使用上面的命令从 LDAP 创建用户或者组,那么请检查 SunOne LDAP 服务器日志文件,以找出导致这个故障的原因。SunOne LDAP 服务器日志文件位于 /usr/iplanet/servers/slapd-(server)/logs 目录中,其中的 (server) 是该 LDAP 服务器实例的名称。

使用 lsuser 命令,验证已经创建了该用户:# lsuser -R LDAP test1
test1 id=230 pgrp=staff groups=staff home=/home/test1 shell=/usr/bin/ksh
login=true su=true rlogin=true daemon=true admin=false sugroups=ALL
admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE
umask=22 registry=LDAP SYSTEM=compat or LDAP logintimes= loginretries=0
pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0
minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks=
dictionlist= fsize=-1 cpu=-1 data=-1 stack=-1 core=-1 rss=-1 nofiles=1000 roles=

验证 registry 和 SYSTEM 属性设置为 LDAP。如果没有将 SYSTEM 属性设置为 LDAP,那么将 /etc/security/user 文件中的缺省节更改为 SYSTEM = "LDAP or compat",以便允许 LDAP 用户以及本地用户登录系统。有关如何使用 registry 和 SYSTEM 属性来控制用户登录的更多信息,请阅读“AIX 安全指南”和参考资料部分中所列出的文章。

现在,您可以通过运行 passwd -R LDAP test1 命令为用户 test1 设置密码,然后验证该用户的登录。

是否应该从 AIX 创建 SunOne 用户?

在缺省情况下,AIX 将使用 posixaccount、account、aixauxaccount 和 ibm-securityidentities 对象类创建一些用户。SunOne LDAP 用户使用了一个稍有不同的对象类列表,其中包括 posixaccount、person、organizationalperson 和 inetorgperson。因此,在 AIX 中为 SunOne 服务器创建的用户不支持 person、organizationalperson 和 inetgorperson 对象类的某些属性。如果某些应用程序依赖 SunOne 服务器来支持这类属性,那么这一点可能会潜在地导致问题。

如果这在您的环境中导致了问题,那么您可能希望避免从 AIX 中为 LDAP 服务器创建用户。可以改为在 Solaris 中创建它们。但请记住,从 Solaris 中创建的用户不具备 AIX LDAP 模式,并且您需要利用使用 AIX 扩展的模式支持 SunOne 用户和组部分中所描述的方法,使用 aixAuxAccount 对象类对用户进行更新。

从 AIX 中创建组,不存在这样的问题。从 AIX 中创建的用户与从 Solaris 中创建的用户具有相同的对象类。

配置 Windows AD 服务器以支持 AIX 属性

Windows 服务器需求如下所示:

Windows 2000/2003

必须安装了 UNIX 模式(MS SFU v3.5 中的模式)。

Windows 2003 R2 必须具有内置的 UNIX 模式或者 SFU 模式,但不能同时具有这两种模式。

必须启用 Windows 用户和组以实现 UNIX 支持。

AIX 需求如下所示:

用于 Windows 2000/2003 AD 服务器的 AIX 5.3 TL05 或更高版本的客户端

用于 Windows 2003 R2 AD 服务器的 AIX 5.3 TL06 或更高版本的客户端

获得 AD 的 AIX LDAP 模式

AIX LDAP 模式 Windows Active Directory 文件 aixSchemaForAD.ldif 是 non-IBM_LDAP.zip 文件的组成部分。

使用 AIX LDAP 模式扩展 AD LDAP 服务器

将 AIX 模式文件 aixSchemaForAD.ldif 复制到 Windows Active Directory 服务器,并且运行下面的命令将该模式加载到 AD 服务器中。ldifde -i -f aixschemafad.ldf -c "{Forest Root}" "(your windows domain)" -k

使用您的实际域替换 "(your windows domain)"。在下面的示例中,我们使用 "dc=CIFS2k3,dc=in,dc=ibm,dc=com" 测试域替换它。

图 1. 加载模式

扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能

使用 AIX LDAP 模式启用 AD 用户和组

AD 对象类允许指定辅助类(Auxiliary Classes) 列表。对象类类型的任何对象(例如,用户)将自动地具有该对象类,以及其辅助对象类。换句话说,要使用 AIX 扩展的模式启用 AD 用户,您所需要做的就是将 AIX aixAuxAccount 对象类添加到 AD 的用户 对象类的辅助类 中,并且将 AIX aixAuxGroup 对象类添加到 AD 的组 对象类的辅助类 中。在使用扩展的 AIX 对象类更新 AD 的用户 和 组 对象类之后,所有的 AD 用户和组都自动地使用 AIX LDAP 模式进行启用,并且不需要更新 AD 中的每个用户和组对象。

AD 对象类的修改需要 Microsoft 管理控制台 (MMC) 的模式插件。如果您没有该模式插件,那么需要安装它。

要更新 AD 用户 对象类,可以从 MMC 中启动模式管理面板,并在属性窗口中编辑用户 对象类。在关系选项卡中,单击 add Class 按钮,然后从下拉列表中选择 aixAuxAccount 对象类,以便将它添加到辅助类。

然后,编辑组 对象类,并将 aixAuxGroup 对象类添加到其辅助类 中。

图 2 显示了将 AIX aixAuxAccount 对象类添加到 Windows 用户 对象类的辅助类 中的过程。

图 2. 向用户添加 aixAuxAccount

扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能

图 3 显示了将 AIX aixAuxGroup 对象类添加到 Windows 组 对象类的辅助类 中的过程

图 3. 向组添加 aixAuxGroup

扩展非 IBM LDAP 服务器以支持全部的 AIX 管理功能

配置和重新配置 AIX LDAP

AIX 为不包括 AIX 扩展属性的 AD 服务器提供了基本属性映射。要使用带 AIX LDAP 模式的 AD 服务器,AIX 需要安装带 AIX LDAP 模式支持的 AD 属性映射文件。在 non-IBM_LDAP.zip 中可以找到这些映射文件,具体如下所示:

sfu30aixuser.map

sfu30aixgroup.map

sfur2aixuser.map

sfur2aixgroup.map

mksecldap 命令并不会自动地挑选新的映射文件;您必须在将 AIX 服务器配置为 AD 的客户端之后,手动地进行这项操作。下面是针对带 AIX LDAP 模式的 AD 服务器配置或者重新配置 AIX 的步骤:

下载映射文件,并将这些映射文件放到 /etc/security/ldap 目录中。

使用 mksecldap 配置 AIX LDAP 服务器,以使用 AD 服务器。如果您的 AIX 系统已经配置为 AD 服务器的 LDAP 客户端,那么可以跳过这个步骤。# mksecldap -c -h (server) -a (binddn) -p (bindpwd) -A ldap_auth

如果您希望使用 unix_auth,那么可以从上面的内容中省略 "-A ldap_auth"。

对于 unix_auth 模式,当 AD 用户支持 UNIX 时,Windows 将不生成 crypt 密码。因此,在配置之后,AD 用户不能在 unix_auth 模式中登录 AIX。您必须以 root 用户的身份在 AIX 中重新设置该用户的密码。这项操作将在 AD 中生成 crypt 密码。您只需要在一个 AIX 系统中重新为该用户设置一次密码。对于所有其他的系统来说,这个更改将是有效的。

在 /etc/security/ldap/ldap.cfg 文件中,进行下面的更改。如果您正在使用 SFU 模式,那么找到下面两行内容:userattrmappath:/etc/security/ldap/sfu30user.map
groupattrmappath:/etc/security/ldap/sfu30group.map

并将它们更改为下面的内容:userattrmappath:/etc/security/ldap/sfu30aixuser.map
groupattrmappath:/etc/security/ldap/sfu30aixgroup.map

如果您正在使用 Windows 2003 R2 模式,那么找到下面两行内容:userattrmappath:/etc/security/ldap/sfur2user.map
groupattrmappath:/etc/security/ldap/sfur2group.map

并将它们更改为下面的内容:userattrmappath:/etc/security/ldap/sfur2aixuser.map
groupattrmappath:/etc/security/ldap/sfur2aixgroup.map

保存更改。

运行 restart-secldapclntd 以重新启动 secldapclntd 守护进程,以便使更改生效:# restart-secldapclntd

为现有的用户设置 AIX 属性

现在,您应该可以运行 chuser 命令为 AD 用户设置 AIX 属性,并使用 lsuser 命令列出这些 AIX 属性。例如:# chuser -R LDAP nofiles=1500 foo
#
# lsuser -R LDAP -a nofiles foo
foo nofiles=1500

在用户 foo 登录到 AIX 中之后,运行 ulimit 命令,以验证他的文件描述符限制是否设置为 1500:

$ ulimit -a
time(seconds)    unlimited
file(blocks)     2097151
data(kbytes)     131072
stack(kbytes)    32768
memory(kbytes)    32768
coredump(blocks)   2097151
nofiles(descriptors) 1500
threads(per process) unlimited
processes(per user) unlimited

从 AIX 创建新的 AD 用户和组

无论 AD 服务器是否具有 AIX LDAP 模式,AIX 都不支持从 AIX 为 AD 服务器创建 LDAP 用户和组。

然而,对于从 Windows 创建的那些用户和组(当它们是支持 UNIX 的),将自动地使用 AIX 对象类(分别为 aixAuxAccount 和 aixAuxGroup),并且支持 AIX 属性。

Tags:扩展 IBM LDAP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接