Sun Java System Directory Server Enterprise Edition 6.1 管理ガイド

LDAP 経由でのオブジェクトクラスの管理

この節では、LDAP 経由で、オブジェクトクラスを作成、表示、および削除する方法を説明します。

オブジェクトクラスの作成

cn=schema エントリには、ディレクトリスキーマの各オブジェクトクラスの定義を格納し、複数の値を持つ属性 objectClasses があります。それらの定義は ldapmodify(1) コマンドを使用して追加できます。

新しいオブジェクトクラス定義とユーザー定義オブジェクトクラスへの変更は 99user.ldif ファイルに保存されます。

ほかのオブジェクトクラスから継承する複数のオブジェクトクラスを作成するときは、最初に親オブジェクトクラスを作成する必要があります。新しいオブジェクトクラスがカスタム属性を使用するときは、その属性も事前に定義しておく必要があります。

各オブジェクトクラス定義に、1 つ以上の OID を指定する必要があります。新しいオブジェクトクラスには少なくとも次の要素を使用することを考慮してください。

Procedureオブジェクトクラスを作成する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. RFC 4517 に指定された構文に従って、オブジェクトクラス定義を準備します。

  2. ldapmodify(1) コマンドを使用して、オブジェクトクラス定義を追加します。

    Directory Server によって、指定した定義に X-ORIGIN 'user defined' が追加されます。


例 11–4 オブジェクトクラスの作成

次の例では、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

$

生産環境では、1.2.3.4.5.6.8 ではなく、有効な一意の OID を指定します。


オブジェクトクラスの表示

cn=schema エントリには、ディレクトリスキーマの各オブジェクトクラスの定義を格納し、複数の値を持つ属性 objectClasses があります。それらの定義は、ldapsearch(1) コマンドを使用して読み取ることができます。

Procedureオブジェクトクラスを表示する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. ldapsearch コマンドを使用して、ディレクトリスキーマに現在存在するすべてのオブジェクトクラス定義を表示します。


例 11–5 オブジェクトクラスの表示

次のコマンドは、すべてのオブジェクトクラスの定義を表示します。


$ ldapsearch -T -b cn=schema "(objectclass=*)" objectClasses

-T オプションにより、ldapsearch コマンドは LDIF 行を折りたたまないため、grepsed などのコマンドを使用して、出力を簡単に操作できます。次に、grep コマンドを使用して、このコマンドの出力をパイプすると、ディレクトリスキーマのユーザー定義拡張のみを表示できます。次に例を示します。


$ ldapsearch -T -b cn=schema "(objectclass=*)" objectClasses | grep "user defined"
objectClasses: ( 1.2.3.4.5.6.8 NAME 'blogger'
 DESC 'Someone who has a blog' STRUCTURAL MAY blog
 X-ORIGIN 'user defined' )
$ 

オブジェクトクラスの削除

cn=schema エントリには、ディレクトリスキーマの各オブジェクトクラスの定義を格納し、複数の値を持つ属性 objectClasses があります。X-ORIGIN 'user defined' を含む定義を削除するには、ldapmodify(1) コマンドを使用します。

スキーマは cn=schema 内の LDAP ビューによって定義されるため、ldapsearch ユーティリティーおよび ldapmodify ユーティリティーを使用してスキーマをオンラインで表示、変更することができます。しかし、削除できるスキーマ要素は、X-ORIGIN フィールドに 'user defined' という値が設定されている要素だけです。サーバーは他の定義を削除しません。

ユーザー定義の要素の変更は、 99user.ldif ファイルに保存されます。

Procedureオブジェクトクラスを削除する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. 削除するオブジェクトクラス定義を表示します。

    詳細については、「オブジェクトクラスを表示する」を参照してください。

  2. ldapmodify(1) コマンドを使用して、スキーマに表示されるオブジェクトクラス定義を削除します。


例 11–6 オブジェクトクラスの削除

次のコマンドは、例 11–4 で作成したオブジェクトクラスを削除します。


$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w -
Enter bind password: 
dn: cn=schema
changetype: delete
delete: objectClasses
objectClasses: ( 1.2.3.4.5.6.8 NAME 'blogger' DESC 'Someone who has a blog' 
 STRUCTURAL MAY blog X-ORIGIN 'user defined' )
^D

Directory Server によって追加された X-ORIGIN 'user defined' を含めて、このスキーマ定義を拡張として分類する必要があります。