Solaris for ISPs 管理指南

第 5 章 使用目录服务

SolarisTM for ISPsTM 使用 SunTM Directory Services 来为 SunTM Internet AdministratorTM 和某些服务存储各部分软件的信息和登录信息。此信息包括标准对象类以及新定义的支持 Solaris for ISPs 功能的对象。

本章提供的信息涉及 Solaris for ISPs 信息树结构、从命令行生成树的条目以及必需的访问控制等。有关规划扩展本身的信息,请参阅 第 6 章,Solaris for ISPs 目录服务规划

Sun Directory Services 提供下列工具以便使用和管理目录:

Sun Directory Services 的书籍,即 Sun Directory Services 3.1 管理指南Sun Directory Services 3.1 用户指南,包含启动和使用这些工具的全部信息。它们是以 AnswerBook2 的格式在产品 CD-ROM 上提供的。命令行程序是以 man 页的形式在第 1 节中提供的 (/opt/SUNWconn/man)。

Solaris for ISPs 目录结构

Solaris for ISPs 在目录信息树 (DIT) 中要求一个特殊的结构,它是在安装和配置期间创建的。所要求的结构由两种命名环境构成,分别称为开放式系统互连 (Open Systems Interconnection, OSI) 树和域组件 (Domain Component, DC) 树。两种树的各部分是平行的。这种平行结构有利于将来自某个 DNS 请求的域名通过 DC 树映射到 OSI 树中的实际内容条目。

OSI 树结构

OSI 树包含 Solaris for ISPs 的实际条目、作为其组件的服务、这些服务的管理员以及这些服务的订户。所要求的结构显示在 图形 5-1 中。

图形 5-1 Solaris for ISPs OSI 树

Graphic

在 OSI 树中,域 sun.com 的条目是由带有判别名 o=sun,c=us 的条目来表示的。该条目称为 root domain(根域),代表 Solaris for ISPs 顾客的业务。您将在安装目录服务过程中指定根域的名称。

根域下为四个必需的 organizationalUnit 条目:

PeopleGroupsServices 节点在您定义的每个域条目下都是必需的。Administrators 节点则仅存在于根域下。

图形 5-2 说明了每一组织单元下的一组典型的条目。

图形 5-2 OSI 树条目

Graphic

organizationalUnit 条目 engdomain 条目的一个示例。这可能是 ISP 的一个企业顾客,或者是使用 ISP 的虚拟域主机服务的任何人。域必须具有两个条目:一个在 OSI 树这里,而另一个在 DC 树中用于域名映射。有关正确地创建这两个条目的信息,请参阅 "创建域条目"

同根域一样,域里面也需要确定的 organizationalUnit 条目。如 图形 5-3 中所示,在根下面的域中也需要 PeopleGroupsServices 条目。

图形 5-3 OSI 树中的域结构

Graphic

在 OSI 树中创建域条目时,您必须同时为 PeopleGroupsServices 创建条目。当您为此域配置服务时,服务条目即在 Services 组织单元下生成。此域的订户信息在 People 组织单元下形成 ispSubscriber 条目。


注意:

在这一版本的 Solaris for ISPs 中,管理员条目只在根域下生成。这些条目是在您通过 GUI 指定它们时由 Sun Internet Administrator 所创建的。


DC 树结构

DC (domain component) 树将域名格式(例如,sun.com)映射到 OSI 树中相应的条目的判别名。如 图形 5-4 所示,DC 通常要比 OSI 树相对更平而简单。

图形 5-4 Solaris for ISPs DC 树

Graphic

图形 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 有下列命令行实用程序用于创建和修改目录条目:

这些目录服务命令行实用程序需要根访问权。它们全部是以参考手册页的形式提供的(第 1 节)。

ldapaddldapmodify 都可以从命令行或指定文件获取输入。因为条目的信息可能相当长而复杂,随后的几节将描述要求文本文件的格式。

在各种情况下,创建一个(或多个)条目都需要下列步骤:

  1. 编写一个文件以指定要在目录中生成的条目。该文件的格式在 ldif(4) 参考手册页中指定。

  2. 获得根访问权并用 ldapadd 创建条目,以便指定带有条目信息的文件。

在各种情况下,ldapadd 命令的格式都应该是:

# ldapadd -D "BindDN" -w password -f file

其中 BindDN 为判别名 (DN),用于绑定到对目录树的这一部分具有写访问权的目录上, 而 password 为用于绑定的口令。将 file 选项替换为您已创建的 ldif 文件的名称。

ldif(4) 文件的结构

对于您在命令行添加的每一条目,您都将创建一个 ldif 格式的文件以容纳该条目的信息。这些文件是简单文本文件,带有一个或多个由单个空行隔开的目录条目。每一条目的结构均如下例所示。


注意:

示例中只显示强制属性。绝大多数对象类都具有多个可选属性,可加以设置以适合您对该条目的特殊用途。


dn: ou=wcgate1,ou=eng,o=sun,c=US 
ou: wcgate1 
associateddomain: wcgate1.eng.sun.com  
objectclass: organizationalUnit 
objectclass: domainRelatedObject

其中

dn

指示正在创建的条目的判别名。

ou

为正在创建的条目的命名属性。公用命名属性包括 commonNameorganizationalUnit (ou) 和 domainComponent (dc)。

associatedDomain

包含 DC 树中相应条目的域名(采用圆点记法)。有关 OSI 树和 DC 树如何交互作用的信息,请参阅 "Solaris for ISPs 目录结构"。至于为某个域创建两个相互参照的条目方面的指导,可参阅 "创建域条目"

在此位置可以有多个“属性:值”(attribute:value) 对,每行一对。

objectClass

为条目的对象类(类型)。可以有多个 objectClass 条目,本例显示两个。

有关可用的对象类和属性的更详细信息,请参阅本指南的 第 6 章,Solaris for ISPs 目录服务规划 以及 Sun Directory Services 3.1 管理指南 的第 8 章“配置目录规划”。

创建域条目

若要在目录中创建一个条目,您必须创建两个平行的域条目,一个在 OSI 树中,另一个在 DC 树中,然后在 OSI 树中的域条目下创建要求的 organizationalUnit 条目。

要在 eng.sun.com 下创建域 wcgate1,执行下列步骤:

  1. 编辑一个文本文件(例如,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 树条目的名称。

  2. 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 中有具体说明)。

  3. domain.ldif 添加数据以用于要求的 Services 组织单元条目:

    dn: ou=Services,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Services 
    objectclass: organizationalUnit
  4. domain.ldif 添加数据以用于要求的 People 组织单元条目:

    dn: ou=People,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: People 
    objectclass: organizationalUnit 
  5. domain.ldif 添加数据以用于要求的 Groups 组织单元条目:

    dn: ou=Groups,ou=wcgate1,ou=eng,o=sun,c=US 
    ou: Groups 
    objectclass: organizationalUnit
  6. 保存然后关闭 domain.ldif

  7. 获得根访问权并使用以下命令将条目添加到目录,从而将绑定 DN 和口令替换为您自己的:

    # ldapadd -D "cn=admin,o=sun,c=US" -w password -f domain.ldif

当您完成 ldapadd后,目录外观类似于 图形 5-5

图形 5-5 添加了一个域的目录结构

Graphic

创建订户条目

Solaris for ISPs 订户分为几种类型:

在以下几节中,为生成复杂的订户条目提供了操作说明,方法是先创建较为简单的条目再往里面进行添加。

创建基本订户条目

在您能够创建订户条目之前,域和 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 

其中

dn

为订户条目的判别名。

commonName

为订户条目的命名属性 (ispSubscriber 对象类)。对于 Solaris for ISPs 订户和管理员,commonName 属性的值格式为 Firstname Lastname (userid)。

sn

为订户的姓氏。

uid

为订户的登录名。

userPassword

为口令,限制为八个字符,如果您与 UNIX 帐户共享口令信息的话。此值是用您在目录服务管理控制台中设置的加密法生成的。

objectClass: ispSubscriber

为该订户条目的对象类类型。

您可以通过向文件中添加带有不同属性值的数据块来创建任何数目的订户条目。完成之后,保存并关闭 people.ldif。获得根访问权并用以下命令向目录添加订户条目,将绑定 DN 和口令替换为您自己的:

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

添加 FTP 和 Web 虚拟主机信息

通过 SunTM Internet FTP ServerTM 和 SunTM WebServerTM (SWS) 得到的特殊配置的虚拟主机所要求的信息只向数据文件添加三个属性:

gidnumber: 60001 
uidnumber: 60001 
ispcontentdirectory: jldoe

其中

gidNumber

是为该用户在用于 FTP 和 Web 服务的虚拟主机域中指定的 UNIX 组 ID。

uidNumber

是为该用户在用于 FTP 和 Web 服务的虚拟主机域中指定的 UNIX 用户 ID。

ispContentDirectory

是该订户的目录文件所在的位置(相对于关联域的文档根)。


注意:

uidNumbergidNumber 属性设置值要求现有的 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 

其中

objectClass: remoteUser

为使用 RADIUS 服务器访问服务的订户所要求的对象类。

authsuffixname: @ispxpress

为添加至订户用户名的后缀,它使 RADIUS 服务器得以区分不同域中带有相同 uid 的条目。请输入与指定的用户条目相符的后缀。

grpcheckinfo: authSuffixName

表明在选择要对比鉴别的条目之前 RADIUS 服务器应该验证 authSuffixName 的属性值。

grpcheckinfo: userPassword

表明在选择要对比鉴别的条目之前 RADIUS 服务器应该验证 userPassword 属性 值。

authserviceprotocol: Framed-User

若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。

framedrouting: None

若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。

framedprotocol: PPP

若您使用的是缺省 RADIUS 配置,请严格地按所示输入此属性。正确的值是由您的网络访问服务器的配置确定的。

grpreplyinfo: authServiceProtocol

命令 RADIUS 服务器将 authServiceProtocol 属性的值包含在其回复消息中。

grpreplyinfo: framedProtocol

命令 RADIUS 服务器将 framedProtocol 属性的值包含在其回复消息中。

grpreplyinfo: framedRouting

命令 RADIUS 服务器将 framedRouting 属性的值包含在其回复消息中。

您可以通过向文件中添加数据块来创建任何数目的订户条目。完成之后,保存并关闭 people.ldif。 获得根访问权并用以下命令向目录添加订户条目,将绑定 DN 和口令替换为您自己的:

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f people.ldif

若您已经创建这些条目,您必须执行一次 ldapmodify。找到 ldapmodify(1) 的手册页并遵照那些操作说明。

完整的 ldif 文件

复杂用户的完整的 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 

创建组条目

在能够创建组条目之前,一些条目必须已经存在:

一旦您创建了这些条目,您即可启动一个文本文件(例如,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

其中

dn

为要创建的组的判别名。

cn

为组条目的相对判别名。

objectClass

对象类 groupOfNames 区分这种类型的条目。

member

每个 member 属性都将某个已有订户条目的判别名作为它的值。

您可以通过向文件中添加数据块来创建任何数目的订户条目。完成之后,保存并关闭 groups.ldif。 获得根访问权并用以下命令向目录添加组,将绑定 DN 和口令替换为您自己的:

# ldapadd -D "cn=admin,o=sun,c=US" -w password -f groups.ldif

Solaris for ISPs 访问控制

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 需要以下几种访问来运作:

启用服务功能的规则

各种 Solaris for ISPs 服务都需要记录和访问存储在它们的服务条目(位于子域和虚拟域中的 Services 节点下)下的配置信息。因此,每个都具有访问权以及它需要写的信息,以便创建和修改 DIT 该部分中的条目,包括其自身的服务条目。

启用恰当的用户访问的规则

用户(订户和管理员)具有对他们口令属性的写访问权,但不能变更其条目的其它部分。然而,任何对 Sun Internet Administrator 有管理访问权的管理员都有全局访问权,并可以变更任何事项。