cn=schema 条目具有多值属性 objectClasses,该属性包含目录模式中每个对象类的定义。可以使用 ldapmodify(1) 命令添加这些定义。
新的对象类定义以及您对用户定义的对象类所做的更改都保存在 99user.ldif 文件中。
如果您要创建继承其他对象类的多个对象类,则必须先创建父对象类。如果新对象类使用自定义属性,还必须首先定义这些属性。
至少要为每个对象类定义提供一个 OID。请考虑至少为新对象类使用以下元素:
对象类 OID。与对象类的对象标识符相对应。OID 是一个字符串,通常是点分十进制数字,可以唯一地标识模式对象。
为了严格遵循 LDAP v3,您必须提供有效的数字 OID。要了解 OID 的详细信息,或者为您的企业请求前缀,请向互联网号码分配机构 (Internet Assigned Number Authority, IANA) 发送电子邮件(地址为 iana@iana.org),或访问 IANA Web 站点。
对象类名称。与对象类的唯一名称相对应。
父对象类。此对象类从中继承属性的现有对象类。
如果您不希望此对象类继承其他特定对象类,请使用 top。
通常,如果要为用户条目添加新属性,则父对象类将是 inetOrgPerson 对象类。如果要为公司条目添加新属性,则父对象类通常为 organization 或 organizationalUnit。如果要为组条目添加新属性,则父对象类通常是 groupOfNames 或 groupOfUniqueNames。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
根据 RFC 4517 中指定的语法准备对象类定义。
使用 ldapmodify(1) 命令添加对象类定义。
请注意,目录服务器会将 X-ORIGIN 'user defined' 添加到您提供的定义中。
以下示例使用 ldapmodify 命令添加新对象类:
$ cat blogger.ldif dn: cn=schema changetype: modify add: objectClasses objectClasses: ( 1.2.3.4.5.6.8 NAME 'blogger' DESC 'Someone who has a blog' SUP inetOrgPerson STRUCTURAL MAY blog ) $ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - -f blogger.ldif Enter bind password: modifying entry cn=schema $ |
在生产环境中,应该提供唯一的有效 OID,而不是 1.2.3.4.5.6.8。