如果现有对象类不支持需要在目录条目中存储的所有信息,则可以添加新的对象类。
可以使用两种方法创建新对象类:
创建许多新对象类,分别用于要添加属性的每个对象类结构。
创建一个对象类,使其支持您为目录创建的所有属性。创建这种对象类的方法是将其定义为 AUXILIARY 对象类。
假定您的站点要创建属性 ExampleDepartmentNumber 和 ExampleEmergencyPhoneNumber。您可以创建多个允许这些属性中的部分属性的对象类。可以创建一个名为 ExamplePerson 的对象类,并使其允许 ExampleDepartmentNumber 和 ExampleEmergencyPhoneNumber 属性。ExamplePerson 的父条目将是 inetOrgPerson。然后可以创建一个名为 ExampleOrganization 的对象类,并使其允许 ExampleDepartmentNumber 和 ExampleEmergencyPhoneNumber 属性。ExampleOrganization 的父条目将是 organization 对象类。
新对象类将以 LDAP v3 模式格式显示,如下所示:
objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.3 NAME 'ExamplePerson' DESC 'Example Person Object Class' SUP inetorgPerson STRUCTURAL MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) ) objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.4 NAME 'ExampleOrganization' DESC 'Example Organization Object Class' SUP organization STRUCTURAL MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) )
或者,您还可以创建一个允许所有这些属性的对象类。然后,可以将此对象类用于要使用这些属性的任何条目。单个对象类将如下所示:
objectclasses: (1.3.6.1.4.1.42.2.27.999.1.2.5 NAME 'ExampleEntry' DESC 'Example Auxiliary Object Class' SUP top AUXILIARY MAY (ExampleDepartmentNumber $ ExampleEmergencyPhoneNumber) )
新的 ExampleEntry 对象类被标记为 AUXILIARY,这意味着它可以用于任何条目,无论该条目的结构对象类如何。
确定如何实现新对象类时,请考虑以下事项。
多个 STRUCTURAL 对象类将导致需要创建和维护更多的模式元素。
通常,元素的数量始终很少,并且几乎不需要维护。但是,如果您计划向模式中添加两个或三个以上的对象类,则使用单个对象类可能会更容易一些。
多个 STRUCTURAL 对象类要求在设计数据时更加仔细和严格。
严格的数据设计将迫使您考虑放置每份数据的对象类结构。此限制可能很有用,但也可能带来麻烦。
如果要将数据放在多种类型的对象类结构上,则单个 AUXILIARY 对象类可简化数据设计。
例如,假定您要将 preferredOS 同时放在个人条目和组条目上。您可能只想创建一个对象类以允许此属性。
设计与实际对象和组元素相关、且可构成合理分类的对象类。
避免为新对象类设置必需属性。
必需属性可能会使模式缺乏灵活性。创建新对象类时,请设置允许属性,而不要设置必需属性。
定义新对象类之后,您需要确定该对象类允许和需要哪些属性,以及该对象类是从哪个或哪些对象类继承而来的。