1.4. LDAP エントリーの名前変更と移動
The following rename operations exist:
- エントリーの名前変更
エントリーの名前を変更すると、
modrdn
操作はエントリーの RDN (Relative Distinguished Name) を変更します。- サブエントリーの名前変更
サブツリーエントリーの場合、
modrdn
操作はサブツリーと子エントリーの DN コンポーネントの名前を変更します。大規模なサブツリーでは、このプロセスに多くの時間とリソースが必要になる可能性があることに注意してください。
- エントリーの新しい親への移動
サブツリーの名前を変更する同様のアクションは、エントリーをあるサブツリーから別のサブツリーに移動することです。これは、
modrdn
操作の拡張タイプで、エントリーの名前を同時に変更し、newSuperior
属性を設定して、エントリーを別の親に移動します。
1.4.1. LDAP エントリーの名前を変更する際の考慮事項
名前変更の操作を実行する場合は、以下の点に留意してください。
- root 接尾辞の名前を変更することはできません。
- サブツリー名前変更操作によるレプリケーションへの影響は最小限に抑えられます。レプリカ合意は、データベースのサブツリーではなく、データベース全体に適用されます。そのため、サブツリーの名前変更操作ではレプリカ合意の再設定は必要ありません。サブツリーの名前変更操作後のすべての名前の変更は、通常どおり複製されます。
- サブツリーの名前を変更し、同期合意を再設定する必要がある場合があります。同期合意は、接尾辞またはサブツリーレベルで設定されます。そのため、サブツリーの名前を変更すると、同期が中断する可能性があります。
- サブツリーの名前を変更するには、サブツリーに設定されたサブツリーレベルのアクセス制御命令 (ACI) を手動で再設定し、サブツリーの子エントリーに設定されたエントリーレベルの ACI を手動で再設定する必要があります。
-
ou
からdc
への移行など、サブツリーのコンポーネントを変更しようとすると、スキーマ違反で失敗する可能性があります。たとえば、organizationalUnit
オブジェクトクラスにはou
属性が必要です。この属性がサブツリーの名前の一部として削除されると、操作は失敗します。 -
グループを移動すると、
MemberOf
プラグインはmemberOf
属性を自動的に更新します。ただし、グループが含まれるサブツリーを移動する場合は、cn=memberof
タスクエントリーでタスクを手動で作成するか、dsconf memberof fixup
コマンドを使用して関連するmemberOf
属性を更新する必要があります。
1.4.2. エントリーの名前を変更するときの相対的な識別名の動作の制御
エントリーの名前を変更すると、deleteOldRDN
属性は、古い相対識別名 (RDN) を削除するか保持するかを制御します。
- deleteOldRDN: 0
既存の RDN は、新しいエントリーの値として保持されます。生成されるエントリーには、古い属性と新しい共通名 (CN) を持つ 2 つの
cn
属性が含まれます。たとえば、以下の属性は、
deleteOldRDN
属性を0
に設定して、cn=old_group,dc=example,dc=com
からcn=new_group,dc=example,dc=com
に名前を変更したグループに属しています。dn: cn=new_group,ou=Groups,dc=example,dc=com objectClass: top objectClass: groupOfUniqueNames cn: old_group cn: new_group
- deleteOldRDN: 1
Directory Server は古いエントリーを削除し、新しい RDN を使用して新しいエントリーを作成します。新しいエントリーには、新しいエントリーの
cn
属性のみが含まれます。たとえば、以下のグループは、
deleteOldRDN
属性を1
に設定して、cn=new_group,dc=example,dc=com
に名前を変更しました。dn: cn=new_group,ou=Groups,dc=example,dc=com objectClass: top objectClass: groupofuniquenames cn: new_group
1.4.3. LDAP エントリーまたはサブツリーの名前の変更
エントリーまたはサブツリーの名前変更には、changetype: modrdn
操作を使用し、newrdn
属性に新しい RDN (Relative Distinguished Name) を設定します。
たとえば、cn=demo1,dc=example,dc=com
エントリーの名前を cn=demo2,dc=example,dc=com
に変更するには、以下のコマンドを実行します。
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=demo1,dc=example,dc=com changetype: modrdn newrdn: cn=demo2 deleteOldRDN: 1
1.4.4. LDAP エントリーを新しい親に移動
エントリーを新しい親に移動するには、changetype: modrdn
操作を使用して、以下の属性を設定します。
-
newrdn
: 移動したエントリーの相対識別名 (RDN) を設定します。RDN が同じままであっても、このエントリーを設定する必要があります。 -
newSuperior
: 新しい親エントリーの識別名 (DN) を設定します。
たとえば、cn=demo
エントリーを ou=Germany,dc=example,dc=com
から ou=France,dc=example,dc=com
に移動するには、以下のコマンドを実行します。
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x dn: cn=demo,ou=Germany,dc=example,dc=com changetype: modrdn newrdn: cn=demo newSuperior: ou=France,dc=example,dc=com deleteOldRDN: 1