Solaris for ISPs 管理指南

从命令行生成目录条目

有关如何创建目录服务条目的通用信息位于 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