12.9. 创建自定义架构文件


模式文件是简单的 LDIF 文件,用于定义 cn=schema 条目。每个属性和对象类都作为属性添加到该条目。以下是创建模式文件的要求:
  • 第一行必须是 dn: cn=schema
  • 模式文件可以同时包含属性和对象类,但它只能包括一个或多个属性。
  • 如果属性和对象类都以样式定义,则必须首先列出所有属性,然后对象类。
  • 对象类可以使用其他架构文件中定义的属性。
  • 该文件的格式必须命名为 [1-9][0-9]text.ldif
    该文件必须以两个数字开头。数字上,核心配置模式之前无法加载架构文件(以 0001开头)。
    另外,Directory 服务器始终将其自定义模式写入 schema 目录中的数字和字母顺序,并按字母顺序排列。它要求此文件是 99user.ldif。如果此文件不是 99user.ldif,则服务器可能会遇到问题。因此,请始终确保自定义架构文件至少小于 99user.ldif。名称 99alpha.ldif 是 okay,名称 99zzz.ldif 不是。
部署指南 中详细介绍了创建架构文件的实践。
属性在 schema 文件中定义为 schema 的 attributetypes 属性,其中五个组件:
例如:
attributetypes: ( 1.2.3.4.5.6.1 NAME 'dateofbirth' DESC 'For employee birthdays' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUED X-ORIGIN 'Example defined')
同样,对象类被定义为 对象类 属性的值,虽然定义对象类的方式略有更大的灵活性。唯一需要的配置是对象类的名称和 OID;所有其他配置都取决于对象类的需求:
  • OID,通常是以点分开的数字
  • 唯一名称,格式为 NAME name
  • 描述,格式为 DESC 描述
  • 此对象类的正式或父对象类,格式为 SUP object_class; 如果没有相关的父项,请使用 SUP top
  • AUXILIARY 一词,它提供了对象类应用到的条目的类型; UXILILIARY 表示它可以应用到任何条目
  • MUST; 之前包括所需属性的列表,若要包含多个属性,用括号括起组,并使用带有符号($)的属性分隔。
  • 允许的属性列表,前面带有 MAY; 以包含多个属性,用括号括起组,并使用符号($)分隔属性。
例如:
objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY  MUST cn MAY (exampleDateOfBirth $ examplePreferredOS) )
例 12.4 “Schema 文件示例” 显示简化的模式文件。

例 12.4. Schema 文件示例

dn: cn=schema
attributetypes: ( 2.16.840.1133730.1.123 NAME 'dateofbirth' DESC 'For employee birthdays' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN 'Example defined')
objectclasses: ( 2.16.840.1133730.2.123 NAME 'examplePerson' DESC 'Example Person Object Class' SUP inetOrgPerson AUXILIARY MAY (dateofbirth) )
自定义架构文件应添加到目录服务器实例的 schema 目录中,即 /etc/dirsrv/slapd-instance/schema。除非服务器重启或运行动态重新加载任务,否则这些文件中的 schema 不会加载并可供服务器使用。
重要
如果要使用 /usr/share/data/ 目录中的标准模式,请将 schema 文件复制到 /usr/share/dirsrv/schema/ 目录中。如果您要求标准模式仅对特定实例使用,请将架构文件复制到 /etc/dirsrv/slapd-instance_name/schema/ 目录中,但使用目标目录中的不同文件名。否则,Directory 服务器在升级过程中重命名文件,并附加 .bak 后缀。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.