7.5. カスタムスキーマファイルの手動での作成


スキーマを拡張することにより、カスタム属性とオブジェクトクラスを Directory Server に追加できます。以下のように、スキーマを拡張できます。

7.5.1. スキーマファイルの要件

スキーマファイルは、cn=schema エントリーを定義する LDIF 形式を使用します。各属性タイプとオブジェクトクラスがこのエントリーに追加されます。

スキーマファイルの要件は次のとおりです。

  • ファイルは次のエントリーで始まる必要があります。

    dn: cn=schema
    Copy to Clipboard Toggle word wrap
  • スキーマファイルには、属性タイプまたはオブジェクトクラス、あるいはその両方を含めることができます。
  • オブジェクトクラス定義は、他のスキーマファイルで定義された属性を使用できます。
  • カスタムスキーマファイルを使用するインスタンスに応じて、次のいずれかの場所に保存します。

    • /etc/dirsrv/slapd-<instance_name>/schema/ は、この特定のインスタンスでスキーマファイルを使用できるようにします。
    • /usr/share/dirsrv/schema/ は、このホストで実行しているすべてのインスタンスでスキーマファイルを使用できるようにします。
  • デフォルトでは、Directory Server は 99user.ldif ファイルのカスタムスキーマを想定しています。別のファイル名を使用する場合は、以下のようにします。

    • 名前は、アルファベット順で 99user.ldif よりも前でなければなりません。たとえば、99aaa.ldif は問題ありませんが、99zzz.ldif は適切ではありません。
    • カスタムスキーマファイルは、00 から 98 までのコアスキーマファイルの後にロードする必要があるため、名前は 2 桁で始まり、01 より大きくなければなりません。

      Directory Server は、スキーマファイルをアルファベット順に読み取ります。したがって、たとえば、定義 99user.ldif を保存すると、名前が 0001 で始まる標準ファイルの定義がオーバーライドされます。

  • /usr/share/dirsrv/data/ ディレクトリーの標準スキーマファイルを使用する場合は、ファイルを使用するインスタンスに応じて、ファイルを /etc/dirsrv/slapd-<instance_name>/schema/ または /usr/share/dirsrv/schema/ にコピーします。ただし、宛先ディレクトリーで別のファイル名を使用してください。それ以外の場合は、Directory Server はアップグレード中にファイルの名前を変更し、.bak 接尾辞を追加します。

例7.2 カスタムスキーマファイルの例

dn: cn=schema
objectClasses: ( 2.16.840.1.1133730.2.1.123 NAME 'exampleperson' DESC 'An example
  person object class' SUP top STRUCTURAL MUST dateOfBirth X-ORIGIN 'user defined' )
attributeTypes: ( 2.16.840.1.1133730.2.1.99 NAME 'dateOfBirth' DESC 'For employee
  birthday' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'user defined' )
Copy to Clipboard Toggle word wrap

7.5.2. カスタムスキーマファイルの属性の定義

スキーマファイルの属性は、attributeTypes 属性の値として定義します。

例7.3 属性の定義

attributeTypes: ( 2.16.840.1.1133730.2.1.123 NAME 'dateOfBirth' DESC 'For employee birthday' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'user defined' )
Copy to Clipboard Toggle word wrap

属性定義には、次のコンポーネントが含まれています。

  • ドット区切りの番号として指定された一意のオブジェクト識別子 (OID)。
  • NAME attribute_name 形式の一意の名前。
  • DESC description 形式の説明。
  • SYNTAX OID 形式の属性値の OID。LDAP 属性構文の詳細は、RFC 4517 を参照してください。
  • オプション: 属性が定義されているソース。

7.5.3. カスタムスキーマファイルでのオブジェクトクラスの定義

スキーマファイルのオブジェクトクラスは、objectClasses 属性の値として定義します。

例7.4 オブジェクトクラスの定義

objectClasses: ( 2.16.840.1.1133730.2.1.99 NAME 'exampleperson' DESC 'An example person object class' SUP top STRUCTURAL MUST dateOfBirth X-ORIGIN 'user defined' )
Copy to Clipboard Toggle word wrap

オブジェクトクラス定義には、次のコンポーネントが含まれています。

  • ドット区切りの番号として指定された一意のオブジェクト識別子 (OID)。
  • NAME attribute_name 形式の一意の名前。
  • DESC description 形式の説明。
  • SUP object_class 形式のこのオブジェクトクラスの上位 (親) オブジェクトクラス。関連する親がない場合は、SUP top を使用します。
  • STRUCTURAL という単語は、オブジェクトクラスが適用されるエントリーのタイプを定義します。すべてのエントリーは、少なくとも 1 つの STRUCTURAL オブジェクトクラスに属している必要があります。AUXILIARY は、すべてのエントリーに適用できることを意味します。
  • 必須属性のリスト。前に MUST キーワードが付きます。複数の属性を含めるには、グループを括弧で囲み、属性を `$ ` (ドル記号とスペース) で区切ります。
  • MAY キーワードが前に付いたオプションの属性のリスト。複数の属性を含めるには、グループを括弧で囲み、属性を `$ ` (ドル記号とスペース) で区切ります。

名前と OID のみが必要であり、その他の設定はオブジェクトクラスのニーズによって異なります。

7.5.4. 属性およびオブジェクトクラスのカスタムスキーマファイルの手動での作成

カスタムスキーマを手動で作成する場合は、それを /etc/dirsrv/slapd-<instance_name>/schema/99user.ldif ファイルに保存します。別のファイル名を使用することも可能ですが、他のファイルに格納されているスキーマ定義がレプリケートされ、レプリカの /etc/dirsrv/slapd-<instance_name>/schema/99user.ldif に格納されるなどの欠点があります。Directory Server がレプリケーション環境でスキーマの更新を管理する方法 を参照してください。

この手順により、以下が追加されます。

  • OID 2.16.840.1.1133730.2.1.123 および構文 Directory String (OID 1.3.6.1.4.1.1466.115.121.1.15) を持つ dateOfBirth という名前の単一値属性
  • exampleperson という名前のオブジェクトクラス (親オブジェクトクラス (SUP top) がなく、dateOfBirth 属性が含まれる必要あり)

手順

  1. /etc/dirsrv/slapd-<instance_name>/schema/99user.ldif ファイルの dn: cn=schema エントリーの下に次のコンテンツを追加します。

    attributeTypes: ( 2.16.840.1.1133730.2.1.123 NAME 'dateOfBirth' DESC 'For employee
      birthday' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'user defined' )
    objectClasses: ( 2.16.840.1.1133730.2.1.99 NAME 'exampleperson' DESC 'An example
      person object class' SUP top STRUCTURAL MUST dateOfBirth X-ORIGIN 'user defined' )
    Copy to Clipboard Toggle word wrap
  2. スキーマの再読み込みタスクを実行します。

    # dsconf <instance_name> schema reload
    Copy to Clipboard Toggle word wrap

検証手順:

  • /var/log/dirsrv/slapd-<instance_name>/errors ファイルを監視します。

    • ビルドが成功すると、Directory Server は次のログを記録します。

      [23/Sep/2021:13:47:33.334241406 +0200] - INFO - schemareload - schemareload_thread - Schema reload task starts (schema dir: default) ...
      [23/Sep/2021:13:47:33.415692558 +0200] - INFO - schemareload - schemareload_thread - Schema validation passed.
      [23/Sep/2021:13:47:33.454768148 +0200] - INFO - schemareload - schemareload_thread - Schema reload task finished.
      Copy to Clipboard Toggle word wrap
    • ビルドが失敗した場合、Directory Server は失敗した手順とその理由をログに記録します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat