12.9. カスタムスキーマファイルの作成
スキーマファイルは、cn=schema エントリーを定義する単純な LDIF ファイルです。各属性とオブジェクトクラスは、そのエントリーの属性として追加されます。スキーマファイルの作成要件を以下に示します。
- 最初の行は dn: cn=schema である必要があります。
- スキーマファイルには、属性とオブジェクトクラスの両方を含めることができますが、どちらか一方のみを含めることもできます。
- スタイルに属性とオブジェクトクラスの両方が定義されている場合は、最初にすべての属性がファイルに記載し、次にオブジェクトクラスを記載する必要があります。
- オブジェクトクラスは、他のスキーマファイルで定義された属性を使用できます。
- このファイルは、[1-9][0-9]text.ldif の形式で指定する必要があります。このファイルは、常に 2 つの数字で開始する必要があります。数値的には、コア設定スキーマ (00 および 01) の前にスキーマファイルを読み込ませることができません。また、Directory Server は、常に、そのカスタムスキーマをスキーマディレクトリー内の数値およびアルファベット順で最も高い名前のスキーマファイルに書き込みます。このファイルは、
99user.ldif
であることを想定しています。このファイルが99user.ldif
ではない場合には、サーバーで問題が発生する可能性があります。そのため、常に、カスタムスキーマファイルが、少なくともアルファベット順で99user.ldif
よりも低くなることを確認します。名前99alpha.ldif
は問題ではありませんが、名前99zzz.ldif
は問題です。
スキーマファイル作成のプラクティスは、『デプロイメントガイド』 を参照してください。
属性は、スキーマへの
attributetypes
属性として、5 つのコンポーネントがあるスキーマファイルで定義されます。
- OID (通常はドット区切り番号)
- NAME 名前 形式の一意の名前
- DESC 説明 形式の説明
- 任意で、属性が定義されているソース
以下に例を示します。
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')
同様に、オブジェクトクラスは
objectclasses
属性の値として定義されますが、オブジェクトクラスの定義方法には若干柔軟性があります。必要な設定は、オブジェクトクラスの名前と OID のみになります。他のすべての設定は、オブジェクトクラスのニーズに依存します。
- OID (通常はドット区切り番号)
- NAME 名前 形式の一意の名前
- DESC 説明 形式の説明
- SUP object_class の形式で、このオブジェクトクラスの上位または親のオブジェクトクラス。関連する親がない場合は、SUP top を使用してください。
- AUXILIARY という単語で、オブジェクトクラスを適用するエントリーのタイプを指定します。AUXILIARY は、任意のエントリーに適用できることを意味します。
- 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「スキーマファイルの例」は、簡潔なスキーマファイルを示しています。
例12.4 スキーマファイルの例
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) )
カスタムスキーマファイルは Directory Server インスタンスのスキーマディレクトリー
/etc/dirsrv/slapd-instance/schema
に追加する必要があります。サーバーが再起動するか、動的に再読み込みされたタスクが実行されない限り、これらのファイルのスキーマは読み込まれず、サーバーで使用できなくなります。
重要
/usr/share/data/
ディレクトリーから標準スキーマを使用する場合は、スキーマファイルを /usr/share/dirsrv/schema/
ディレクトリーにコピーします。標準スキーマが特定のインスタンスでのみ利用できるようにする必要がある場合は、スキーマファイルを /etc/dirsrv/slapd-instance_name/schema/
ディレクトリーにコピーしますが、宛先ディレクトリーで別のファイル名を使用します。それ以外の場合は、Directory Server はアップグレード中にファイルの名前を変更し、.bak
接尾辞を追加します。