我有用于添加属性类型 passwordNonRootMayResetUserpwd 的 ff LDIF 文件。该属性类型已经存在。
dn: cn=schema
changetype: modify
delete: objectClasses
objectClasses: ( 1.3.6.1.4.1.42.2.27.9.2.6 NAME 'passwordPolicy'
SUP top STRUCTURAL MUST cn MAY ( description $ passwordMaxAge
$ passwordExp $ passwordMinLength $ passwordInHistory
$ passwordChange $ passwordWarning $ passwordLockout
$ passwordMaxFailure $ passwordResetDuration
$ passwordUnlock $ passwordLockoutDuration
$ passwordCheckSyntax $ passwordMustChange
$ passwordStorageScheme $ passwordMinAge
$ passwordResetFailureCount $ passwordExpireWithoutWarning
$ passwordRootdnMayBypassModsChecks ) )
dn: cn=schema
changetype: modify
add: objectClasses
objectClasses: ( 1.3.6.1.4.1.42.2.27.9.2.6 NAME 'passwordPolicy'
SUP top STRUCTURAL MUST cn MAY ( description $ passwordMaxAge
$ passwordExp $ passwordMinLength $ passwordInHistory
$ passwordChange $ passwordWarning $ passwordLockout
$ passwordMaxFailure $ passwordResetDuration
$ passwordUnlock $ passwordLockoutDuration
$ passwordCheckSyntax $ passwordMustChange
$ passwordStorageScheme $ passwordMinAge
$ passwordResetFailureCount $ passwordExpireWithoutWarning
$ passwordRootdnMayBypassModsChecks $ passwordNonRootMayResetUserpwd ) )
我收到了 ff 错误并且陷入困境。
$ ldapmodify -h host -p 8888 -D "cn=Directory Manager" -f delete_add.ldif
Enter bind password:
modifying entry cn=schema
ldap_modify: DSA is unwilling to perform
ldap_modify: additional info: objectclasses: No target attribute type or object class specified
我不知道是什么导致了这个错误,因为 attributeType 和 objectClass 都存在。
编辑:此 LDAP 服务在 Sun OS 10 上运行。
答案1
您没有提到哪个后端服务器提供 LDAP 服务。通常,以这种方式修改架构时,最好将删除和添加作为一个原子操作进行。
即在删除:之后立即执行添加:操作。
答案2
我通过按顺序执行 ff 来使其工作:
首先,添加属性类型
dn: cn=schema
changetype: modify
add: attributeTypes
attributeTypes: ( 1.3.6.1.4.1.42.2.27.9.1.782
NAME 'passwordNonRootMayResetUserpwd'
DESC 'Sun ONE defined password policy attribute type'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
X-DS-USE 'internal'
X-ORIGIN 'Sun ONE Directory Server' )
最后,将 attributeType 与 objectClass 关联
dn: cn=schema
changetype: modify
add: objectClasses
objectClasses: ( 1.3.6.1.4.1.42.2.27.9.2.6 NAME 'passwordPolicy'
SUP top STRUCTURAL MUST cn MAY ( description $ passwordMaxAge
$ passwordExp $ passwordMinLength $ passwordInHistory
$ passwordChange $ passwordWarning $ passwordLockout
$ passwordMaxFailure $ passwordResetDuration
$ passwordUnlock $ passwordLockoutDuration
$ passwordCheckSyntax $ passwordMustChange
$ passwordStorageScheme $ passwordMinAge
$ passwordResetFailureCount $ passwordExpireWithoutWarning
$ passwordRootdnMayBypassModsChecks $ passwordNonRootMayResetUserpwd ) )
在单独的 LDIF 文件上触发这两个,然后调用 ldapmodify