LDAP pwdLastSet 属性中的 DateTime "invalid per syntax"
DateTime "invalid per syntax" in LDAP pwdLastSet attribute
我正在尝试向我的 LDAP 测试用户添加 pwdLastSet
属性。我创建了这个 ldif 文件:
dn: cn=test,dc=example,dc=com
changetype: add
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 199412161032Z
当我尝试 ldapmodify
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-pwdlastset.ldif
我收到一条错误消息:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=test,dc=example,dc=com"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax
我查阅了 RFC4517 中的第 3.3.13 章“广义时间”,其中提供了以下示例:
Examples:
199412161032Z
199412160532-0500
Both example values represent the same coordinated universal time:
10:32 AM, December 16, 1994.
您可能已经注意到,我什至将第一个示例复制粘贴到我的 ldif 文件中,但无济于事。有人能告诉我这个语法有什么问题吗?
忘了说我也试过 unix 时间戳
pwdlastset: 1643988710
产生相同的错误消息。
更新:
当我将 changetype
从 add
更改为 modify
并删除 objectClass
(如 EricLavault 的回答中所建议的那样)时:
dn: cn=test,dc=example,dc=com
changetype: modify
add: pwdLastSet
pwdLastSet: 1643988710
我收到以下错误:
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-field.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=test,dc=example,dc=com"
ldap_modify: Undefined attribute type (17)
additional info: pwdlastset: attribute type undefined
当我像这样再次添加 objectClass
定义时
dn: cn=test,dc=example,dc=com
changetype: modify
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 1643988710
我收到以下错误:
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-field.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapmodify: modify operation type is missing at line 3, entry "cn=test,dc=example,dc=com"
我尝试了其他一些修改操作类型 (replace
),但没有任何效果。还是卡在这里。
事情(乍一看并不明显)是 ldapmodify
允许 添加 个条目,在这种情况下你设置 changetype: add
。
您想修改一个现有条目,因此您应该设置changetype: modify
以便add: pwdLastSet
或(替换|删除)。
如果你还需要在词条中添加objectClass: passwordLastSet
或者其他修改,注意每一个操作(添加|替换|删除)都要分开,eg.
dn: cn=test,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: passwordLastSet
-
add: pwdLastSet
pwdLastSet: 199412161032Z
此外,如果我没记错的话,PwdLastSet
属性仅在 Active Directory 中实现。
如果您正在使用 OpenLDAP,您可能应该使用 PwdPolicy
辅助 class(ppolicy 覆盖)。
我正在尝试向我的 LDAP 测试用户添加 pwdLastSet
属性。我创建了这个 ldif 文件:
dn: cn=test,dc=example,dc=com
changetype: add
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 199412161032Z
当我尝试 ldapmodify
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-pwdlastset.ldif
我收到一条错误消息:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=test,dc=example,dc=com"
ldap_add: Invalid syntax (21)
additional info: objectClass: value #0 invalid per syntax
我查阅了 RFC4517 中的第 3.3.13 章“广义时间”,其中提供了以下示例:
Examples:
199412161032Z
199412160532-0500
Both example values represent the same coordinated universal time:
10:32 AM, December 16, 1994.
您可能已经注意到,我什至将第一个示例复制粘贴到我的 ldif 文件中,但无济于事。有人能告诉我这个语法有什么问题吗?
忘了说我也试过 unix 时间戳
pwdlastset: 1643988710
产生相同的错误消息。
更新:
当我将 changetype
从 add
更改为 modify
并删除 objectClass
(如 EricLavault 的回答中所建议的那样)时:
dn: cn=test,dc=example,dc=com
changetype: modify
add: pwdLastSet
pwdLastSet: 1643988710
我收到以下错误:
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-field.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=test,dc=example,dc=com"
ldap_modify: Undefined attribute type (17)
additional info: pwdlastset: attribute type undefined
当我像这样再次添加 objectClass
定义时
dn: cn=test,dc=example,dc=com
changetype: modify
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 1643988710
我收到以下错误:
$ sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-field.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
ldapmodify: modify operation type is missing at line 3, entry "cn=test,dc=example,dc=com"
我尝试了其他一些修改操作类型 (replace
),但没有任何效果。还是卡在这里。
事情(乍一看并不明显)是 ldapmodify
允许 添加 个条目,在这种情况下你设置 changetype: add
。
您想修改一个现有条目,因此您应该设置changetype: modify
以便add: pwdLastSet
或(替换|删除)。
如果你还需要在词条中添加objectClass: passwordLastSet
或者其他修改,注意每一个操作(添加|替换|删除)都要分开,eg.
dn: cn=test,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: passwordLastSet
-
add: pwdLastSet
pwdLastSet: 199412161032Z
此外,如果我没记错的话,PwdLastSet
属性仅在 Active Directory 中实现。
如果您正在使用 OpenLDAP,您可能应该使用 PwdPolicy
辅助 class(ppolicy 覆盖)。