对象类的特征

Active Directory 域服务中的每个对象类均由架构容器中的 classSchema 对象进行定义。 classSchema 对象的属性指定了类的特征,例如:

  • 类标识符:类具有多个标识符,其中包括 ldapDisplayNameschemaIDGUID;其中,LDAP 客户端使用前者来标识搜索筛选器中的类,安全描述符中则使用后者来控制对类的访问。
  • 潜在属性:对象类定义包括可对类实例设置的必需属性和可选属性的列表。
  • 潜在父项:除目录层次结构的根之外,每个对象实例只有一个父项。 对象类定义包括潜在父项的列表,即可能包含类实例的对象类。
  • 超级类和辅助类:每个对象类(顶级类除外)均派生自其他类。 类会从类层次结构中位于其上的类继承潜在的属性和父项。 类还可具有任意数量的辅助类,并从中继承潜在属性的列表。 有关详细信息,请参阅 Active Directory 架构中的类继承

下表列出了 classSchema 对象的关键属性的 lDAPDisplayName 和说明。 有关详细信息以及 classSchema 对象的必需属性和可选属性的完整列表,请参阅 classSchema

lDAPDisplayName 说明
cn Active Directory 域服务中的每个对象均有一个命名属性,而从中可形成其相对可分辨名称 (RDN)。 classSchema 对象的命名属性为 cn (Common-Name)。 分配给 cn 的值为对象类作为其 RDN 的值。 例如,organizationalUnit 对象类的 cn 为 Organization-Unit,而它将以可分辨名称形式显示为 CN=Organization-Unit。 cn 在架构容器中必须保持唯一。
lDAPDisplayName LDAP 客户端(如 ADSI LDAP 提供程序)用于引用类的名称;例如,用于在搜索筛选器中指定该类。 类的 lDAPDisplayName 在架构容器中必须保持唯一,这意味着它在所有 classSchemaattributeSchema 对象中必须保持唯一。 有关为新类编写 cnlDAPDisplayName 的详细信息,请参阅命名属性和类
schemaIDGUID 存储为八进制字符串的 GUID。 此 GUID 可唯一标识该类。 此 GUID 可用于访问控制条目,从而控制对此类对象的访问。 有关详细信息,请参阅设置子对象操作的权限。 创建 classSchema 对象时,如果未指定该值,Active Directory 服务器则会生成此值。 如果创建新类,则请为每个类生成自己的 GUID,以便扩展的所有安装均使用同一 schemaIDGUID 来引用该类。
adminDisplayName 在管理工具中用于该类的显示名称。 如果在创建类时未指定 adminDisplayName,系统则会使用 Common-Name 值作为显示名称。 仅当类的显示说明符的 classDisplayName 属性中不存在映射时,才会使用此显示名称。 有关详细信息,请参阅显示说明符类与属性显示名称
governsID 该类的 OID。 此值必须在所有 classSchema 对象的 governsIDs 以及所有 attributeSchema 对象的 attributeIDs 之间保持唯一。 有关详细信息,请参阅对象标识符
rDnAttId 标识命名属性,而该属性是用于为此类提供 RDN(如果不同于默认值 (cn))的属性。 不建议使用除 cn 以外的命名属性。 命名属性应取自所有 LDAP 版本 3 客户端了解的已知集(OU、CN、O、L 和 DC)。 有关详细信息,请参阅对象名称和标识Active Directory 域服务中属性的语法。 命名属性必须采用目录字符串语法。 有关详细信息,请参阅 Active Directory 域服务中属性的语法
mustContainsystemMustContain 一对多值属性,它们可用于指定此类实例上必须存在的属性。 它们是创建过程中必须存在的必需属性,且在创建后无法清除。 创建类后,无法更改这些属性。 类的完整强制属性集为针对此类和所有继承类的 systemMustContainmustContain 值的并集。
mayContainsystemMayContain 一对多值属性,它们可用于指定此类实例上可能存在的属性。 它们为非强制性的可选属性;因此,此类实例上可能存在也可能不存在这些属性。 可从现有类别 1 或类别 2 classSchema 对象添加或删除 mayContain 值。 从 classSchema 对象中删除 mayContain 值之前,应搜索对象类的实例并清除待删除属性的所有值。 创建类后,即无法更改 systemMayContain 属性。 类的完整可选属性集为针对此类和所有继承类的 systemMayContainmayContain 值的并集。
possSuperiorssystemPossSuperiors 一对多值属性,它们可用于指定结构类,而这些类可为此类实例的合法父项。 潜在上级的完整集为针对此类以及所有继承的结构类或抽象类的 systemPossSuperiorspossSuperiors 值的并集。 systemPossSuperiorspossSuperiors 值并非继承自辅助类。 可从现有类别 1 或类别 2 classSchema 对象添加或删除 possSuperiors 值。 创建类后,无法更改 systemPossSuperiors 属性。
objectClassCategory 一个整数值,而该值指定了可为下列值之一的类的类别:
  • 结构类,它表示可在目录中对其进行实例化。
  • 抽象类,它表示该类提供可用于形成结构类的类的基本定义。
  • 辅助类,它表示一个类,而该类可用于扩展继承自它的类的定义,但无法用于自行形成一个类。
有关更多信息,请参见结构类、抽象类和辅助类
subClassOf 此类的直接超级类的 OID,即,从中派生此类的类。 对于结构类,subClassOf 可为结构类或抽象类。
对于抽象类,subClassOf 只能为抽象类。
对于辅助类,subClassOf 可为抽象类或辅助类。
如果定义新类,则请确保将新类写入目录时存在或将存在 subClassOf 类。 如果类不存在,则不会将 classSchema 对象添加到目录中。
auxiliaryClasssystemAuxiliaryClass 一对多值属性,它们指定了此类继承的辅助类。 辅助类的完整集为针对此类和所有继承类的 systemAuxiliaryClassauxiliaryClass 值的并集。 对于现有 classSchema 对象,可将值添加到 auxiliaryClass 属性,但不能删除。 创建类后,无法更改 systemAuxiliaryClass 属性。
defaultObjectCategory 此对象类或其某一超级类的可分辨名称。 创建此对象类的实例时,系统会将新实例的 objectCategory 属性设为其对象类的 defaultObjectCategory 属性中指定的值。 objectCategory 属性为一个索引属性,它可用于提高对象类搜索的效率。 如果在创建类时未指定 defaultObjectCategory,系统则会将其设为此类的 classSchema 对象的可分辨名称 (DN)。 如果此对象经常被超级类的值而不是对象自己的类查询,则可将 defaultObjectCategory 设为此超级类的 DN。 例如,如果要对预定义(类别 1)的类进行子类分类,最佳做法则是将 defaultObjectCategory 设为与超级类相同的值。 此举可让标准 UI“查找”子类。
有关详细信息,请参阅对象类和对象类别
defaultHidingValue 一个布尔值,而该值指定了此类新实例的 showInAdvancedViewOnly 属性的默认设置。 最终用户对很多目录对象并不感兴趣。 为防止这些对象导致 UI 混乱,每个对象均有一个名为 showInAdvancedViewOnly 的布尔属性。 如果将 defaultHidingValue 设为 TRUE,新对象实例则会在管理单元和 Windows Shell 中隐藏。 即使针对对象类的 displaySpecifier 对象设置了相应的创建向导属性,该对象类的菜单项也不会显示在管理单元的新建上下文菜单中。
如果将 defaultHidingValue 设为 FALSE,此对象的新实例则会显示在管理单元和 Windows Shell 中。 将此属性设为 FALSE 可查看管理单元和 Shell 中的类实例,并在管理单元的新建菜单中启用创建向导及其菜单项。
如果未设置 defaultHidingValue 值,则默认值为 TRUE
systemFlags 一个整数值,而该值包含用于定义该类的其他属性的标志。 0x10 位可标识类别 1 的类(属于系统中包含的基础架构的类)。 你无法设置此位,因此该位不会在类别 2 的类(即架构的扩展)中进行设置。
systemOnly 一个布尔值,而该值指定了是否只有 Active Directory 服务器可修改该类。 只能由目录系统代理 (DSA) 来创建或删除仅限系统类。 仅限系统类是指系统依赖于实现正常操作的那些类。
defaultSecurityDescriptor 指定此类的新对象的默认安全描述符。 有关详细信息,请参阅默认安全描述符如何对新目录对象设置安全描述符
isDefunct 一个布尔值,而该值表示此类是否已失效。 有关详细信息,请参阅禁用现有类和属性
说明 供管理应用程序使用的类的文本说明。
objectClass 标识此对象的对象类为一个实例,而该类对于所有类定义为 classSchema 对象类,对于属性定义则为 attributeSchema 对象类。