SolarisTM for ISPsTM 使用 SunTM Directory Services 来为 SunTM Internet AdministratorTM 和某些服务存储各部分软件的信息和登录信息。此信息包括标准对象类以及新定义的支持 Solaris for ISPs 功能的对象。
本章提供的信息涉及 Solaris for ISPs 信息树结构、从命令行生成树的条目以及必需的访问控制等。有关规划扩展本身的信息,请参阅 第 6 章,Solaris for ISPs 目录服务规划。
Sun Directory Services 提供下列工具以便使用和管理目录:
Deja 工具――基于 Java 的目录编辑器,可提供添加、修改和删除功能。
Sun Directory Services 管理控制台提供对服务器的本地和远程管理。
Web 网关支持从任何浏览器的浏览访问。
一组完整的命令行程序。
Sun Directory Services 的书籍,即 Sun Directory Services 3.1 管理指南 和 Sun Directory Services 3.1 用户指南,包含启动和使用这些工具的全部信息。它们是以 AnswerBook2 的格式在产品 CD-ROM 上提供的。命令行程序是以 man 页的形式在第 1 节中提供的 (/opt/SUNWconn/man)。
Solaris for ISPs 在目录信息树 (DIT) 中要求一个特殊的结构,它是在安装和配置期间创建的。所要求的结构由两种命名环境构成,分别称为开放式系统互连 (Open Systems Interconnection, OSI) 树和域组件 (Domain Component, DC) 树。两种树的各部分是平行的。这种平行结构有利于将来自某个 DNS 请求的域名通过 DC 树映射到 OSI 树中的实际内容条目。
OSI 树包含 Solaris for ISPs 的实际条目、作为其组件的服务、这些服务的管理员以及这些服务的订户。所要求的结构显示在 图形 5-1 中。
在 OSI 树中,域 sun.com 的条目是由带有判别名 o=sun,c=us 的条目来表示的。该条目称为 root domain(根域),代表 Solaris for ISPs 顾客的业务。您将在安装目录服务过程中指定根域的名称。
根域下为四个必需的 organizationalUnit 条目:
Administrators 包含 SunTM Internet AdministratorTM 管理员的条目。这些条目是在您使用 GUI 创建管理员时由产品所创建的。
People 包含 ISP 服务订户的条目。您可在命令行或者使用 Deja 工具为您的顾客创建条目。
Groups 包含为加强访问控制而将订户条目集中成组的条目。您可根据自己的需要创建组条目,使用命令行或 Deja 工具皆可。
Services 包含为 Solaris for ISPs 服务而创建的条目。仅当您要集成某个新服务或者对 SunTM Internet FTP ServerTM 进行特殊的虚拟主机配置时,才应该在此单元下生成条目。有关这方面要求的信息,请参阅 Sun Internet FTP Server 和 Sun Internet Administrator 联机帮助。
People、Groups 和 Services 节点在您定义的每个域条目下都是必需的。Administrators 节点则仅存在于根域下。
图形 5-2 说明了每一组织单元下的一组典型的条目。
organizationalUnit 条目 eng 是 domain 条目的一个示例。这可能是 ISP 的一个企业顾客,或者是使用 ISP 的虚拟域主机服务的任何人。域必须具有两个条目:一个在 OSI 树这里,而另一个在 DC 树中用于域名映射。有关正确地创建这两个条目的信息,请参阅 "创建域条目"。
同根域一样,域里面也需要确定的 organizationalUnit 条目。如 图形 5-3 中所示,在根下面的域中也需要 People、Groups 和 Services 条目。
在 OSI 树中创建域条目时,您必须同时为 People、Groups 和 Services 创建条目。当您为此域配置服务时,服务条目即在 Services 组织单元下生成。此域的订户信息在 People 组织单元下形成 ispSubscriber 条目。
在这一版本的 Solaris for ISPs 中,管理员条目只在根域下生成。这些条目是在您通过 GUI 指定它们时由 Sun Internet Administrator 所创建的。
DC (domain component) 树将域名格式(例如,sun.com)映射到 OSI 树中相应的条目的判别名。如 图形 5-4 所示,DC 通常要比 OSI 树相对更平而简单。
在 图形 5-4 中,条目 dc=sun,dc=com 对应于 OSI 树中的 o=sun,c=us 条目。eng 域在此映射为域名服务器 (DNS) 格式 eng.sun.com。
有关如何生成两个域条目的细节,请参阅 "创建域条目"。
有关如何创建目录服务条目的通用信息位于 Sun Directory Services 3.1 管理指南 中的第 5 章“加载和维护目录信息”。本节描述如何创建 Solaris for ISPs 所要求的指定条目的操作说明。
有关如何使用 Deja 工具创建目录条目的信息,请参阅 SunTM Internet AdministratorTM 联机帮助。
Sun Directory Services 有下列命令行实用程序用于创建和修改目录条目:
ldapadd
ldapmodify
ldapdelete
这些目录服务命令行实用程序需要根访问权。它们全部是以参考手册页的形式提供的(第 1 节)。
ldapadd 和 ldapmodify 都可以从命令行或指定文件获取输入。因为条目的信息可能相当长而复杂,随后的几节将描述要求文本文件的格式。
在各种情况下,创建一个(或多个)条目都需要下列步骤:
在各种情况下,ldapadd 命令的格式都应该是:
# ldapadd -D "BindDN" -w password -f file
其中 BindDN 为判别名 (DN),用于绑定到对目录树的这一部分具有写访问权的目录上, 而 password 为用于绑定的口令。将 file 选项替换为您已创建的 ldif 文件的名称。
对于您在命令行添加的每一条目,您都将创建一个 ldif 格式的文件以容纳该条目的信息。这些文件是简单文本文件,带有一个或多个由单个空行隔开的目录条目。每一条目的结构均如下例所示。
示例中只显示强制属性。绝大多数对象类都具有多个可选属性,可加以设置以适合您对该条目的特殊用途。
dn: ou=wcgate1,ou=eng,o=sun,c=US ou: wcgate1 associateddomain: wcgate1.eng.sun.com objectclass: organizationalUnit objectclass: domainRelatedObject
其中
指示正在创建的条目的判别名。
为正在创建的条目的命名属性。公用命名属性包括 commonName、organizationalUnit (ou) 和 domainComponent (dc)。
包含 DC 树中相应条目的域名(采用圆点记法)。有关 OSI 树和 DC 树如何交互作用的信息,请参阅 "Solaris for ISPs 目录结构"。至于为某个域创建两个相互参照的条目方面的指导,可参阅 "创建域条目"。
在此位置可以有多个“属性:值”(attribute:value) 对,每行一对。
为条目的对象类(类型)。可以有多个 objectClass 条目,本例显示两个。
有关可用的对象类和属性的更详细信息,请参阅本指南的 第 6 章,Solaris for ISPs 目录服务规划 以及 Sun Directory Services 3.1 管理指南 的第 8 章“配置目录规划”。
若要在目录中创建一个条目,您必须创建两个平行的域条目,一个在 OSI 树中,另一个在 DC 树中,然后在 OSI 树中的域条目下创建要求的 organizationalUnit 条目。
要在 eng.sun.com 下创建域 wcgate1,执行下列步骤:
编辑一个文本文件(例如,domain.ldif)并输入用于 OSI 树条目的数据:
dn: ou=wcgate1,ou=eng,o=sun,c=US ou: wcgate1 associateddomain: wcgate1.eng.sun.com objectclass: organizationalUnit objectclass: domainRelatedObject
请注意条目的 associatedDomain 属性包含使用圆点记法(DNS 式样)的 DC 树条目的名称。
向 domain.ldif 添加用于 DC 树条目的数据:
dn: dc=wcgate1,dc=eng,dc=sun,dc=com dc: wcgate1 associatedname: ou=wcgate1,ou=eng,o=sun,c=US description: DNS-to-DN Mapping for wcgate1.eng.sun.com labeleduri: ldap:///ou=wcgate1,ou=eng,o=sun,c=US??sub objectclass: domain objectclass: labeledURIObject
请注意条目的 associatedName 属性包含 OSI 树条目的判别名。 labeledURI 属性包含同样的信息(在 RFC 2255 中有具体说明)。
向 domain.ldif 添加数据以用于要求的 Services 组织单元条目:
dn: ou=Services,ou=wcgate1,ou=eng,o=sun,c=US ou: Services objectclass: organizationalUnit
向 domain.ldif 添加数据以用于要求的 People 组织单元条目:
dn: ou=People,ou=wcgate1,ou=eng,o=sun,c=US ou: People objectclass: organizationalUnit
向 domain.ldif 添加数据以用于要求的 Groups 组织单元条目:
dn: ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US ou: Groups objectclass: organizationalUnit
保存然后关闭 domain.ldif。
获得根访问权并使用以下命令将条目添加到目录,从而将绑定 DN 和口令替换为您自己的:
# ldapadd -D "cn=admin,o=sun,c=US" -w password -f domain.ldif
当您完成 ldapadd后,目录外观类似于 图形 5-5。
Solaris for ISPs 订户分为几种类型:
一般(基本)订户
使用虚拟主机 FTP 或 Web 服务的订户
通过 RADIUS 服务器获取对服务的访问的订户
使用两者,且其目录条目要求 RADIUS 和 FTP 两种信息的订户
在以下几节中,为生成复杂的订户条目提供了操作说明,方法是先创建较为简单的条目再往里面进行添加。
在您能够创建订户条目之前,域和 People 组织单元条目必须已经存在。一旦您创建了这些条目,您即可编辑一个文本文件(例如, people.ldif),然后输入订户的数据。基本订户条目只有单个对象类 ispSubscriber 以及非常少的强制属性。基本订户的文件类似这样:
dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US commonname: Jane Doe (jldoe) sn: Doe uid: jldoe userpassword: hidden objectclass: ispSubscriber
其中
为订户条目的判别名。
为订户条目的命名属性 (ispSubscriber 对象类)。对于 Solaris for ISPs 订户和管理员,commonName 属性的值格式为 Firstname Lastname (userid)。
为订户的姓氏。
为订户的登录名。
为口令,限制为八个字符,如果您与 UNIX 帐户共享口令信息的话。此值是用您在目录服务管理控制台中设置的加密法生成的。
为该订户条目的对象类类型。
您可以通过向文件中添加带有不同属性值的数据块来创建任何数目的订户条目。完成之后,保存并关闭 people.ldif。获得根访问权并用以下命令向目录添加订户条目,将绑定 DN 和口令替换为您自己的:
# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif
通过 SunTM Internet FTP ServerTM 和 SunTM WebServerTM (SWS) 得到的特殊配置的虚拟主机所要求的信息只向数据文件添加三个属性:
gidnumber: 60001 uidnumber: 60001 ispcontentdirectory: jldoe
其中
是为该用户在用于 FTP 和 Web 服务的虚拟主机域中指定的 UNIX 组 ID。
是为该用户在用于 FTP 和 Web 服务的虚拟主机域中指定的 UNIX 用户 ID。
是该订户的目录文件所在的位置(相对于关联域的文档根)。
为 uidNumber 和 gidNumber 属性设置值要求现有的 UNIX 帐户设置正确,以便能够共享对虚拟 FTP 域的访问。有关对虚拟主机配置进行定义的信息,请参阅 Sun Internet FTP Server 联机帮助。
您可以通过向文件中添加数据块来创建任何数目的订户条目。完成之后,保存并关闭 people.ldif。获得根访问权并用以下命令向目录添加订户条目,将绑定 DN 和口令替换为您自己的:
# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif
若您已经创建这些条目,您必须执行一次 ldapmodify。找到 ldapmodify(1) 的手册页并遵照那些操作说明。
通过 RADIUS 服务器获得对 ISP 服务访问权的订户,其条目必须支持附加的对象类 (remoteUser) 并且已有若干属性被添加到条目信息中。
缺省的 Solaris for ISPs 配置指定根域作为对 RADIUS 订户条目的查找基础。若您的配置有所不同,请使用目录服务管理控制台来配置 RADIUS,并输入与您的查找基础相符的值。
ldif 文件中的附加行如下:
objectclass: remoteUser authsuffixname: @ispxpress grpcheckinfo: authSuffixName grpcheckinfo: userPassword authserviceprotocol: Framed-User framedrouting: None framedprotocol: PPP grpreplyinfo: authServiceProtocol grpreplyinfo: framedProtocol grpreplyinfo: framedRouting
其中
为使用 RADIUS 服务器访问服务的订户所要求的对象类。
为添加至订户用户名的后缀,它使 RADIUS 服务器得以区分不同域中带有相同 uid 的条目。请输入与指定的用户条目相符的后缀。
表明在选择要对比鉴别的条目之前 RADIUS 服务器应该验证 authSuffixName 的属性值。
表明在选择要对比鉴别的条目之前 RADIUS 服务器应该验证 userPassword 属性 值。
若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。
若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。
若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。
命令 RADIUS 服务器将 authServiceProtocol 属性的值包含在其回复消息中。
命令 RADIUS 服务器将 framedProtocol 属性的值包含在其回复消息中。
命令 RADIUS 服务器将 framedRouting 属性的值包含在其回复消息中。
您可以通过向文件中添加数据块来创建任何数目的订户条目。完成之后,保存并关闭 people.ldif。 获得根访问权并用以下命令向目录添加订户条目,将绑定 DN 和口令替换为您自己的:
# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif
若您已经创建这些条目,您必须执行一次 ldapmodify。找到 ldapmodify(1) 的手册页并遵照那些操作说明。
复杂用户的完整的 ldif 文件类似这样:
dn: cn=Jane Doe (jldoe),ou=People,ou=wcgate1,ou=eng,o=sun,c=US commonname: Jane Doe (jldoe) sn: Doe uid: jldoe userpassword: hidden gidnumber: 60001 uidnumber: 60001 objectclass: ispSubscriber objectclass: remoteUser ispcontentdirectory: /home/users/jldoe authsuffixname: @ispxpress grpcheckinfo: authSuffixName grpcheckinfo: userPassword authserviceprotocol: Framed-User framedrouting: None framedprotocol: PPP grpreplyinfo: authServiceProtocol grpreplyinfo: framedProtocol grpreplyinfo: framedRouting
在能够创建组条目之前,一些条目必须已经存在:
两个域条目(OSI 和 DC 树)
Group 组织单元条目
将要成为组的成员的订户条目(在 People 节点下)。
一旦您创建了这些条目,您即可启动一个文本文件(例如,groups.ldif)并输入该组的数据。典型的数据集如下所示:
dn: cn=isp-gp1,ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US cn: isp-grp1 objectclass: groupOfNames member: cn=Ed Anchor (anchor),ou=People,ou=wcgate1,ou=eng,o=sun,c=US member: cn=April Shower (showers),ou=People,ou=wcgate1,ou=eng,o=sun,c=US member: cn=Chili Jones (relleno),ou=People,ou=wcgate1,ou=eng,o=sun,c=US
其中
为要创建的组的判别名。
为组条目的相对判别名。
对象类 groupOfNames 区分这种类型的条目。
每个 member 属性都将某个已有订户条目的判别名作为它的值。
您可以通过向文件中添加数据块来创建任何数目的订户条目。完成之后,保存并关闭 groups.ldif。 获得根访问权并用以下命令向目录添加组,将绑定 DN 和口令替换为您自己的:
# ldapadd -D "cn=admin,o=sun,c=US" -w password -f groups.ldif
Solaris for ISPs 为目录服务设置访问控制,以便确保有此要求的软件部分可以正当地访问,同时又可防止其他人访问,从而保证了安全性。这些访问控制的总体原则是:所有实体都有读访问权,而写访问权是受限制的。很重要的一点是您切勿变更现有的访问控制,否则有可能引进安全性风险或者造成 Solaris for ISPs 失败。
切记访问控制规则是对次序敏感的。Sun Directory Services 检查访问时,使用的是适用于请求的第一条规则。所有余下的规则都被忽略。因此,请勿变更文件中规则的顺序。在创建新规则时,千万要谨慎从事,以免它不慎影响现有的 Solaris for ISPs 信息,使得已经到位的某些访问控制规则失效。
如果您以管理员的身份绑定到该目录,则访问控制检查将关闭。
一般说来,Solaris for ISPs 的特殊信息存储在支持对象类的条目中,这些类是在 Solaris for ISPs 的规划扩展中定义的。每个这种类的名称都是以字符串 "isp." 开始的。包含这种对象类(或属性)的访问配置文件中的任何规则都有可能是一个 Solaris for ISPs 规则,而且就其本身来说也是对任何变更都敏感的。访问控制规则是在 /etc/opt/SUNWconn/ldap/current/dsserv.acl.conf 中定义的。
有关 Sun Directory Services 访问控制方面的完整信息,请参阅 Sun Directory Services 3.1 管理指南 的第 1 章“目录概念绪论”和第 4 章“配置目录服务器”。
下面几节描述的是 Solaris for ISPs 访问控制所确保的一般特性。短语 "has access" 表明使用条目的 DN 和口令绑定到目录将给定访问的指示格式。
Sun Internet Administrator 需要以下几种访问来运作:
它需要创建和删除管理员。因此, Sun Internet Administrator 对于由 Administrators 组织单元条目所定义的 DIT 部分具有写访问权。
它必须能够变更特定的管理员属性(最明显的即 userPassword 和 ispAuthorizedService 属性)。
它必须能够控制管理服务条目 (ispManagedService) 的创建。因此,Sun Internet Administrator 在顶层 SUNWixamc 条目下拥有自己的一部分树(例如,ispVersion=1.0,ou-SUNWixamc,ou-Services,o=sun,c=us)。
它需要为它登记和管理的服务创建顶层服务条目。因此,Sun Internet Administrator 具有所需的访问权和信息以写入 DIT 那一部分(例如,ou-Services,o=sun,c=us)。
它还需要在 ispService 条目上设置受保护的 ispPrivateData 属性的值。因此,Sun Internet Administrator 具有对现有服务条目的该属性的读写访问权。(实际上,其它实体都没有对 ispPrivateData 属性的任何访问权。)
各种 Solaris for ISPs 服务都需要记录和访问存储在它们的服务条目(位于子域和虚拟域中的 Services 节点下)下的配置信息。因此,每个都具有访问权以及它需要写的信息,以便创建和修改 DIT 该部分中的条目,包括其自身的服务条目。
用户(订户和管理员)具有对他们口令属性的写访问权,但不能变更其条目的其它部分。然而,任何对 Sun Internet Administrator 有管理访问权的管理员都有全局访问权,并可以变更任何事项。