上一页      目录      索引      文档主页      下一页     
iPlanet Directory Server 5.1 管理员指南



附录 A LDAP 数据交换格式


iPlanet Directory Server 使用 LDAP 数据交换格式 (LDIF) 来描述文本格式的目录及目录项。LDIF 通常用于构建初始目录数据库或一次将大量的条目添加到目录中。此外,LDIF 还用于描述目录项的更改。因此,多数 iPlanet Directory Server 命令行实用程序都依赖于 LDIF 进行输入或输出。

由于 LDIF 是一种文本文件格式,因此实际上可以使用任何语言来创建 LDIF 文件。所有目录数据都将用 Unicode 的 UTF-8 编码方式进行存储。因此,所创建的 LDIF 文件也必须为 UTF-8 编码格式。

本章包含有关 LDIF 信息的以下部分:

有关利用 LDIF 来修改目录项的信息,请参阅第 2 章“创建目录项”



LDIF 文件格式



LDIF 由一个或多个用空行分隔的目录条目组成。每个 LDIF 条目都包括可选的条目 ID、必需的特异名称、一个或多个对象类及多个属性定义。

LDIF 格式在 RFC 2849 LDAP 数据交换格式 (LDIF) 中定义。iPlanet Directory Server 符合该标准。

以 LDIF 表示的目录条目基本格式如下所示:

dn: distinguished_name
objectClass: object_class
objectClass: object_class
...
attribute_type[;subtype]:attribute_value
attribute_type
[;subtype]:attribute_value
...

您必须提供 DN 及至少一个对象类定义。此外,还须包括为该条目定义的对象类所需的所有属性。其它所有属性和对象类为可选项。指定对象类和属性的顺序可以任意。冒号后面的空格也是可选的。有关标准对象类和属性的信息,请参阅 iPlanet Directory Server 模式参考指南

表 A-1 介绍上面定义中所述的 LDIF 各字段。


表 A-1    LDIF 字段

字段

定义

[id]  

可选。代表条目 ID 的一个十进制正数。数据库创建工具将生成此 ID。请勿擅自添加或编辑该值。  

dn: distinguished_name  

指定条目的特异名称。有关特异名称的完整说明,请参阅 iPlanet Directory Server 部署指南  

objectClass: object_class  

指定该条目所用的对象类。对象类标识条目所允许和需要的属性类型或模式。有关标准对象类的列表,请参阅 iPlanet Directory Server 模式参考指南;有关自定义模式的信息,请参阅第 9 章“扩展目录模式”  

attribute_type  

指定条目所用的说明性属性。该属性应在模式中定义。有关标准属性的列表,请参阅 iPlanet Directory Server 模式参考指南;有关自定义模式的信息,请参阅第 9 章“扩展目录模式”  

[subtype]  

可选。指定子类型:语言、二进制或发音。使用该标记可以标识表达相应属性值的语言,或者指定属性值是二进制还是属性值的发音。有关属性子类型的信息,请参阅第 49 页上的“添加属性子类型”。有关受支持的子类型列表,请参阅第 523 页上的表 D-2  

attribute_value  

指定属性类型所用的属性值。  

表示目录条目更改的 LDIF 语法与上述语法有所不同。有关利用 LDIF 来修改目录项的信息,请参阅第 2 章“创建目录项”


LDIF 中的连续行

指定 LDIF 时,通过将行的续接部分缩进一个空格,可以断开行并换行继续(即折行)。例如,下列两个语句相同:

dn: cn=Jake Lupinski,dc=siroe,dc=com

dn: cn=Jake Lup
 inski, dc=sir
 oe,dc=comcom

这里并不是必须断开 LDIF 行然后换行续接。但这样做却有可能提高 LDIF 文件的可读性。


表示二进制数据

使用 Base 64 编码,可以在 LDIF 中表示二进制数据( 例如 JPEG 图像)。


使用基本 64 位编码方式

基本 64 位编码数据的标识方式是使用 :: 符号。例如:

jpegPhoto:: encoded_data

除了二进制数据外,其它必须为基本 64 位编码的值包括:

  • 任何以分号 (;) 或空格开头的值

  • 任何包含非 ASCII 数据的值(包含新行)

directoryserver ldif 命令行实用程序与 -b 参数配合使用,可以将二进制数据转换为 LDIF 格式:

# /usr/sbin/directoryserver ldif -b attributeName

其中 attribute_name 是要接受二进制数据的属性的名称。二进制数据将从标准输入中读入,而结果将写入标准输出中。因此,您应使用重定向运算符来选择输入和输出文件。

此命令将接收所有输入,然后设定正确的行续接格式及相应的属性信息。它还要判定是否需要基本 64 编码。例如:

/usr/sbin/directoryserver ldif -b jpegPhoto < mark.jpg > out.ldif

本例将接收一个包含 JPEG 格式图像的二进制文件,然后将其转换为 LDIF 格式,属性名为 jpegPhoto。输出将被保存到 out.ldif 中。

-b 选项指定实用程序应将整个输入解释为单个二进制值。如果未指定 -b,则各行将被视为独立的输入值。

然后可以编辑输出文件,以添加创建或修改包含该二进制值的目录条目所需的 LDIF 语句。例如,可以在文本编辑器中打开文件 out.ldif,然后在文件开头添加以下行(以粗体显示):

dn: cn=Barney Fife,ou=People,dc=siroe,dc=com
changetype: modify
add: jpegPhoto
jpegPhoto::
encoded_data

在此示例中,encoded_data 代表由命令生成的 out.ldif 文件的内容。



使用 LDIF 指定目录项



您可以存储多种类型的目录条目。本部分主要介绍三种最常见的目录项:组织、组织单元及组织人员条目。

为条目定义的对象类用于指示该条目是代表组织、组织单元、组织人员还是其它类型的条目。有关可以创建的目录项的一般说明,请参阅 iPlanet Directory Server 部署指南。有关目录中可以默认使用的对象类完整列表及最常用属性的列表,请参阅 iPlanet Directory Server 模式参考指南


指定组织条目

目录中通常至少有一个组织条目。典型情况下是目录中第一个(即最上端的)条目。组织条目通常对应目录的后缀设置。例如,如果将目录定义为使用后缀 dc=siroe,dc=com,则目录中即可有一个名为 dc=siroe,dc=com 的组织条目。

被指定用于定义组织条目的 LDIF 其形式应为:

dn: distinguished_name
objectClass: top
objectClass: organization
o: organization_name
list_of_optional_attributes
...

下面是 LDIF 格式的组织条目示例:

dn: dc=siroe,dc=com
objectclass: top
objectclass: organization
o: siroe.com Corporation
description: Fictional company for example purposes
telephonenumber: 555-5555

下例中的组织名称使用逗号:

dn: o="siroe.com Chile\\, S.A."
objectclass: top
objectclass: organization
dn: o="siroe.com Chile\\, S.A."
description: Fictional company for example purposes
telephonenumber: 555-5556

对于 LDIF 格式的组织条目而言,其各个元素的定义见表 A-2


表 A-2    组织条目中的 LDIF 元素

LDIF 元素

说明

dn: distinguished_name  

指定条目的特异名称。DN 的说明见 iPlanet Directory Server 部署指南。DN 为必需项。  

objectClass: top  

必需项。指定 top 对象类。  

objectClass:
 organization
 

指定 organization 对象类。此行将条目定义为组织。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  

o: organization_name  

该属性指定组织的名称。如果组织名称中包含逗号,则必须用反斜杠进行转义,且整个组织变量都必须用引号引起来。但是,如果使用 UNIX shell,则此反斜杠也需要进行转义,也就是说需要使用两个反斜杠。例如,要将后缀设置为 siroe.com Bolivia, S.A. 您应该键入 "o: siroe.com Bolivia\\, S.A."  

list_of_attributes  

指定要为条目维护的可选属性列表。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  


指定组织单元条目

组织单元条目通常用于表示目录树中的主分支点,即子目录。它们对应于公司中的主要(一般为静态)实体(例如包含人员的子树或包含组的子树)。但条目中包含的组织单元属性也可代表公司中的主要组织,例如营销或工程部。

目录树中通常有多个组织单元,或称分支点。有关如何设计目录树的信息,请参阅 iPlanet Directory Server 部署指南

被指定用于定义组织单元条目的 LDIF 必须显示为:

dn: distinguished_name
objectClass: top
objectClass: organizationalUnit
ou: organizational_unit_name
list_of_optional_attributes
...

下面是 LDIF 格式的组织单元条目示例:

dn: ou=people, dc=siroe,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
description: Fictional organizational unit for example purposes

表 A-3 定义了 LDIF 格式的组织单元条目的各个元素。


表 A-3    组织单元条目中的 LDIF 元素

LDIF 元素

说明

dn: distinguished_name  

指定条目的特异名称。DN 为必需项。如果 DN 中有逗号,则逗号必须用反斜杠 (\) 进行转义。例如:

dn: ou=people,o=siroe.com Bolivia\,S.A.  

objectClass: top  

必需项。指定 top 对象类。  

objectClass:
 organizationalUnit
 

指定 organizationalUnit 对象类。此行将条目定义为组织单元。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  

ou: organizational_unit_name  

该属性指定组织单元的名称。  

list_of_attributes  

指定要为条目维护的可选属性列表。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  


指定组织人员条目

目录中的大多数条目表示组织人员。

在 LDIF 中,组织人员的定义如下所示:

dn: distinguished_name
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: common_name
sn: surname
list_of_optional_attributes

下面是 LDIF 格式的组织人员条目的示例:

dn: uid=bjensen,ou=people,dc=siroe,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Babs Jensen
sn: Jensen
givenname: Babs
uid: bjensen
ou: Marketing
ou: people
description: Fictional company for example purposes
telephonenumber: 555-5557
userpassword: {sha}dkfljlk34r2kljdsfk9

表 A-4 定义了 LDIF 人员条目的各个元素。


表 A-4    人员条目中的 LDIF 元素

LDIF 元素

说明

dn: distinguished_name  

指定条目的特异名称。DN 为必需项。如果 DN 中有逗号,则逗号必须用反斜杠 (\) 进行转义。例如:dn:uid=bjensen,ou=people,o=siroe.com Bolivia\,S.A.  

objectClass: top  

必需项。指定 top 对象类。  

objectClass: person  

指定 person 对象类。进行人员或组织人员的搜索操作期间,由于许多 LDAP 客户机都要求指定该对象类,因此应包含该指定。  

objectClass:
organizationalPerson
 

指定 organizationalPerson 对象类。进行组织人员的搜索操作期间,由于许多 LDAP 客户机都要求指定该对象类,因此应包含该指定。  

objectClass: inetOrgPerson  

指定 inetOrgPerson 对象类。由于 inetOrgPerson 对象类所含的属性范围最广,因此建议在创建组织人员时使用该对象类。该对象类需要使用 uid 属性,而包含该对象类的条目的命名是以 uid 属性值为基础的。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  

cn: common_name  

指定人员的通用名,通常是此人常用的全名。例如,cn: Bill Anderson。至少需要一个通用名。  

sn: surname  

指定人员的姓氏。例如 sn: Anderson。姓氏为必需项。  

list_of_attributes  

指定为条目维护的可选属性列表。有关该对象类可以使用的属性列表,请参阅 iPlanet Directory Server 模式参考指南  



使用 LDIF 定义目录



可以使用 LDIF 来定义整个目录的内容。如果需要向目录中添加许多条目,则使用 LDIF 来创建目录是一种较为有效的方法。

要使用 LDIF 创建目录,请执行下列步骤:

  1. 创建 ASCII 文件,其中包含要以 LDIF 格式添加的条目。

    确保各个条目之间由空行分隔。应只使用单行,且文件中的第一行不得为空行。否则,ldapmodify 实用程序将退出。有关详细信息,请参阅“使用 LDIF 指定目录项”

  2. 各个文件的开头应为数据库中最上端的条目(即根条目)。

    根条目必须代表数据库中所含的后缀或子后缀。例如,如果数据库的后缀为 dc=siroe,dc=com,则目录中的第一个条目必须为:

    dn: dc=siroe,dc=com

    有关后缀的信息,请参阅 iPlanet Directory Server 配置、命令和文件参考指南中所述的“后缀”参数内容。

  3. 确保 LDIF 文件中代表分支点的条目位于要在该分支下创建的条目之前。

    例如,如果想将条目放到人员或组子树中,则在这些子树中创建条目之前,应首先创建这些子树的分支点。

  4. 使用下列方法之一,利用 LDIF 文件创建目录:


LDIF 文件示例

下例所示的 LDIF 文件中包含一个组织、两个组织单元及三个组织人员条目:

dn: o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organization
o: siroe.com Corp
description: Fictional organization for example purposes

dn: ou=People,o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People
description: Fictional organizational unit for example purposes
tel: 555-5559

dn: cn=June Rossi,ou=People,o=siroe.com Corp,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: June Rossi
sn: Rossi
givenName: June
mail: rossi@siroe.com
userPassword: {sha}KDIE3AL9DK
ou: Accounting
ou: people
telephoneNumber: 2616
roomNumber: 220

dn: cn=Marc Chambers,ou=People,o=siroe.com Corp,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Marc Chambers
sn: Chambers
givenName: Marc
mail: chambers@siroe.com
userPassword: {sha}jdl2alem87dlacz1
telephoneNumber: 2652
ou: Manufacturing
ou: People
roomNumber: 167

dn: cn=Robert Wong,ou=People,o=siroe.com Corp,dc=siroe,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: Robert Wong
cn: Bob Wong
sn: Wong
givenName: Robert
givenName: Bob
mail: bwong@siroe.com
userPassword: {sha}nn2msx761
telephoneNumber: 2881
roomNumber: 211
ou: Manufacturing
ou: people

dn: ou=Groups,o=siroe.com Corp,dc=siroe,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
description: Fictional organizational unit for example purposes



存储多语种信息



如果目录中只有一种语言,则向目录中添加新条目无须执行任何特殊的操作。但如果您的组织为跨国机构,就可能会觉得有必要存储多语种信息,从而使不同地区的用户都能以自己的语种查看目录信息。

当目录中的信息以多语种表示时,服务器就会建立语言标记与属性值的关联关系。添加新条目时,必须提供 RDN (相对特异名称)中所用的属性值,无需任何语言代码。

您甚至可以将多个语种存储到单个属性中。此时,属性类型将相同,但各个值都有不同的语言代码。

有关受 iPlanet Directory Server 支持的语言列表及其关联的语言标记,请参阅第 521 页上的“识别受支持的区域设置”



注意 语言标记不会影响目录中字符串的存储方式。所有对象类和属性字符串均以 UTF-8 进行编码。



例如,假设 siroe.com Corporation 在美国及法国都有办事处,且希望员工能以自己的本国语言查看目录信息。添加目录条目时,目录管理员会选择提供英语和法语的属性值。添加新员工 Babs Jensen 的目录项时,管理员会创建下列 LDIF 条目:

dn: uid=bjensen,ou=people,dc=siroe,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
name: Babs Jensen
cn: Babs Jensen
sn: Jensen
uid: bjensen
streetAddress: 1 University Street
streetAddress;lang-en: 1 University Street
streetAddress;lang-fr: 1\, rue de l’Université
preferredLanguage: fr

利用 LDAP 客户机,并且以英语作为语言首选项的客户在访问该目录项时将会看到地址 1 University Street。而利用 LDAP 客户机,并且以法语作为语言首选项的客户在访问该目录项时将会看到地址 1 rue de l’Université


上一页      目录      索引      文档主页      下一页     
版权所有 © 2001 Sun Microsystems, Inc.。部分版权所有 © 2001 Netscape Communications Corp.。保留所有权利。

最近更新时间 2002 年 2 月 15 日