1.4. 重命名和移动 LDAP 条目
The following rename operations exist:
- 重命名条目
如果您重命名条目,
modrdn
操作会更改条目的相对可分辨名称(RDN):- 重命名子条目
对于子树条目,
modrdn
操作重命名子树以及子条目的 DN 组件:请注意,对于大型子树,这个过程可能需要大量时间和资源。
- 将条目移到新父项
重命名子树的类似操作是将条目从一个子树移到另一个子树。这是展开的
modrdn
操作类型,它同时重命名条目并设置newSuperior
属性,该属性将条目从一个父项移到另一个父属性:
1.4.1. 重命名 LDAP 条目的注意事项
在执行重命名操作时请注意以下几点:
- 您不能重命名 root 后缀。
- 子树重命名操作对复制具有最小效果。复制协议应用于整个数据库,不适用于数据库内的子树。因此,子树重命名操作不需要重新配置复制协议。子树重命名操作之后的所有名称都会正常进行复制。
- 重命名子树可能需要重新配置任何同步协议。同步协议在后缀或子树级别上设置。因此,重命名子树可能会破坏同步。
- 重命名子树要求手动为子树设置的任何子树级访问控制指令(ACI),以及为子树的子条目设置的任何条目级 ACI。
-
尝试更改子树的组件,如从
ou
移到dc
,可能会因为 schema 违反而失败。例如,organizationalUnit
对象类需要ou
属性。如果该属性作为重命名子树的一部分被删除,则操作会失败。 -
如果您移动组,
MemberOf
插件会自动更新memberOf
属性。但是,如果您移动包含组的子树,您必须在cn=memberof
任务条目中手动创建任务,或使用dsconf memberof fixup
命令来更新相关的memberOf
属性。
1.4.2. 控制重命名条目时的相对可分辨名称行为
当您重命名条目时,deleteOldRDN
属性控制是否删除或保留旧的相对可分辨名称(RDN):
- deleteOldRDN: 0
现有 RDN 保留为新条目中的值。生成的条目包含两个
cn
属性:一个带有旧属性,另一个带有新的通用名称(CN)。例如,以下属性属于从
cn=old_group,dc=example,dc=com
重命名为cn=new_group,dc=example,dc=com
的组,并将deleteOldRDN
属性设置为0
:dn: cn=new_group,ou=Groups,dc=example,dc=com objectClass: top objectClass: groupOfUniqueNames cn: old_group cn: new_group
- deleteOldRDN: 1
目录服务器删除旧条目,并使用新的 RDN 创建新条目。新条目仅包含新条目的
cn
属性。例如,以下组被重命名为
cn=new_group,dc=example,dc=com
,并将deleteOldRDN
属性设置为
1: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)。
例如,要将 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
其他资源