范围,假设和环境
本文的范围是使用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用户功能。 这些附加的AIX属性可能无法从第三方LDAP服务器获得,并且如果配置为此类服务器的客户端,则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 Server的IBM AIX 5.2和更高版本。
- IBM AIX 5.3 TL 05和更高版本,用于带有Microsoft Service For UNIX(SFU)模式的Microsoft®Windows Active Directory。
- 具有R2模式的Microsoft Windows Active Directory的IBM AIX 5.3 TL 06和更高版本。
- AIX基本CD和扩展包CD随附的IBMTivoli®Directory Server软件。 仅客户端文件集是必需的。
- 可以从本文引用的链接中获得AIX LDAP模式。
LDAP服务器经过测试
本文中描述的解决方案已在以下目录服务器上经过测试:
- 在Solaris 10上运行的SunOne LDAP服务器
- 在Windows 2000和2003上运行的Microsoft Active Directory(AD),具有来自Microsoft Service For UNIX(SFU)3.5版的架构。
- 在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服务器可以使用该模式,但这并不意味着管理员还可以为现有的SunOne用户和组设置AIX属性。 必须完成一个额外的步骤-必须使用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服务器,SunOne LDAP服务器中的用户对象也不会使用aixAuxAccount对象类自动更新。 同样,组对象不会使用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作为LDAP客户端配置或重新配置为Solaris LDAP服务器,请在AIX上运行mksecldap命令:
# mksecldap -c -h <server> -a <binddn> -p <bindpwd> -A ldap_auth
如果首选unix_auth,则可以在此示例中省略“ -A ldap_auth”。
通过运行以下命令,验证LDAP客户端已配置有SunOne 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之后,运行limit命令以验证其文件描述符限制是否设置为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=
验证注册表和SYSTEM属性设置为LDAP。 如果未将SYSTEM属性设置为LDAP,则将/ etc / security / user文件中的默认节更改为SYSTEM = "LDAP or compat"
以便允许LDAP用户和本地用户登录。系统。 有关如何使用注册表和SYSTEM属性控制用户登录的更多信息,请阅读“ AIX安全指南”和“ 相关主题”部分中列出的文章。
现在,您可以通过运行passwd -R LDAP test1命令来设置用户test1的密码 ,然后验证用户的登录名。
是否通过AIX创建SunOne用户?
缺省情况下,AIX使用posixaccount,account,aixauxaccount和ibm-securityidentities对象类创建用户。 SunOne LDAP用户使用稍微不同的对象类列表,包括posixaccount,person,organizationalperson和inetorgperson 。 因此,从AIX创建到SunOne服务器的用户不支持人员,组织人员和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
用您的实际域替换“ <您的Windows域>”。 在以下示例中,我们将其替换为“ dc = CIFS2k3,dc = in,dc = ibm,dc = com”的测试域。
图1.加载模式
使用AIX LDAP模式启用AD用户和组
AD对象类允许指定辅助类的列表。 对象类类型的任何对象(例如,用户)都会自动具有该对象类及其辅助对象类。 换句话说,要使AD用户具有AIX扩展架构,要做的就是将AIX aixAuxAccount对象类添加到AD 用户对象类的辅助类中,并将AIX aixAuxGroup对象类添加到AD 组的辅助类中对象类。 一旦使用扩展的AIX对象类更新了AD的用户和组对象类,便会自动使用AIX LDAP模式启用所有AD用户和组,而无需更新AD中的每个用户和组对象。
修改AD对象类需要Microsoft管理控制台(MMC)的架构插件。 如果没有架构插件,则需要安装它。
要更新AD 用户对象类,请从MMC启动模式管理面板,然后从属性窗口中编辑用户对象类。 在关系选项卡中,单击添加类按钮,然后从下拉列表中选择aixAuxAccount对象类以将其添加到辅助类中。
然后编辑组对象类,并将aixAuxGroup对象类添加到其辅助类 。
图2显示了将AIX aixAuxAccount对象类添加到Windows 用户对象类的辅助类的过程。
图2.向用户添加aixAuxAccount
图3显示了将AIX aixAuxGroup对象类添加到Windows 组对象类的辅助类中的过程。
图3.将aixAuxGroup添加到组
配置和重新配置AIX LDAP
AIX具有AD服务器的基本属性映射,但不包括AIX扩展属性。 要使用具有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属性。
翻译自: https://www.ibm.com/developerworks/aix/library/au-aixldap/index.html