第4章 属性の一意性の有効化
ディレクトリーまたはサブツリー全体で属性の値が一意になるように、デフォルトで無効になっている Attribute Uniqueness プラグインを使用できます。
次のいずれかの方法で、属性の一意性を検証するようにプラグインを設定できます。
以下の例のように、
uniqueness-subtrees
パラメーターを使用して、プラグインが属性の一意性をチェックする必要があるサブツリーの一覧を設定します。uniqueness-attribute-name: mail uniqueness-subtrees: ou=accounting,dc=example,dc=com uniqueness-subtrees: ou=sales,dc=example,dc=com uniqueness-across-all-subtrees: on uniqueness-exclude-subtrees: ou=private,ou=people,dc=example,dc=com
詳細は、Configuring the Attribute Uniqueness plug-in over subtrees を参照してください。
uniqueness-top-entry-oc
パラメーターを使用して、親エントリーオブジェクトクラスを設定します。更新されたエントリーの親エントリーにこのオブジェクトクラスが含まれる場合、プラグインは親エントリーサブツリーの下の属性の一意性をチェックします。たとえば、次のようにプラグインを設定できます。uniqueness-attribute-name: mail uniqueness-top-entry-oc: nsContainer uniqueness-subtree-entries-oc: inetOrgPerson uniqueness-exclude-subtrees: ou=private,ou=people,dc=example,dc=com
詳細は、オブジェクトクラスを介した Attribute Uniqueness プラグインの設定 を 参照してください。
プラグインの複数の設定エントリーを作成して、異なる条件を適用できます。Directory Server は、cn=plugins,cn=config
の下にプラグインのすべての設定エントリーを保存します。
4.1. コマンドラインを使用したサブツリーでの Attribute Uniqueness プラグインの設定
dsconf
ユーティリティーを使用して、プラグインが属性の一意性をチェックする必要があるサブツリーのリストを設定できます。サブツリーには、接尾辞を含むディレクトリー内の任意のエントリーを指定できます。
以下の手順例を使用して、ou=sales,dc=example,dc=com
および ou=accounting,dc=example,dc=com
サブツリーの下にあるエントリーで mail
属性を一意であることを確認するプラグインを設定します。
前提条件
- Directory Manager のパーミッションがある。
手順
新しいプラグイン設定エントリーを作成します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq add "Mail Uniqueness" --attr-name mail --subtree ou=sales,dc=example,dc=com ou=accounting,dc=example,dc=com
このコマンドは、
cn=Mail Uniqueness,cn=plugins,cn=config
設定エントリーを作成します。注記1 つの設定エントリーで複数の属性の一意性を検証するようにプラグインを設定できます。
オプション:このプラグイン設定エントリーに設定されたすべてのサブツリーで一意性を設定します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "Mail Uniqueness" --across-all-subtrees on
このコマンドは、
uniqueness-across-all-subtrees
プラグイン設定パラメーターを で設定し
ます。したがって、プラグインはou=sales,dc=example,dc=com
およびou=accounting,dc=example,dc=com
サブツリーの両方でmail
属性を一意性をチェックします。デフォルトでは、プラグインはエントリーが作成または更新されるサブツリー全体で一意性のみをチェックします。つまり、ou=sales,dc=example,dc=com
でエントリーを作成または更新すると、プラグインはこのサブツリー全体でmail
属性を一意性をチェックします。オプション:プラグインが属性の一意性検証から除外する必要のあるサブツリーを設定します。
たとえば、プラグインが
ou=internal,ou=sales,dc=example,dc=com
サブツリーを省略するには、ldapmodify
ユーティリティーを使用してuniqueness-exclude-subtrees
パラメーターを設定できます。# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=Mail Uniqueness,cn=plugins,cn=config changetype: modify add: uniqueness-exclude-subtrees uniqueness-exclude-subtrees: ou=internal,ou=sales,dc=example,dc=com
オプション:特定のオブジェクトクラスを含むエントリーでのみ一意性を検証するプラグインがある場合は、このオブジェクトクラスを
uniqueness-subtree-entries-oc
パラメーターの値として設定します。たとえば、
inetOrgPerson
オブジェクトクラスが含まれるエントリーでのみmail
属性を一意にするには、次のように入力します。# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq set "Mail Uniqueness" --subtree-entries-oc=inetOrgPerson
サーバーでプラグインを有効にします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq enable "Mail Uniqueness"
インスタンスを再起動します。
# dsctl instance_name restart
検証
設定エントリーの詳細を表示します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin attr-uniq show "Mail Uniqueness" dn: cn=Mail Uniqueness,cn=plugins,cn=config cn: Mail Uniqueness nsslapd-plugin-depends-on-type: database nsslapd-pluginDescription: Enforce unique attribute values nsslapd-pluginEnabled: on ... uniqueness-across-all-subtrees: on uniqueness-attribute-name: mail uniqueness-exclude-subtrees: ou=internal,ou=sales,dc=example,dc=com uniqueness-subtree-entries-oc: inetOrgPerson uniqueness-subtrees: ou=accounting,dc=example,dc=com uniqueness-subtrees: ou=sales,dc=example,dc=com
関連情報
- Attribute Uniqueness プラグインの属性