I'm trying to add a pwdLastSet
attribute to my LDAP test user. I've created this ldif file:
dn: cn=test,dc=example,dc=com
changetype: add
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 199412161032Z
When I try to ldapmodify
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f add-pwdlastset.ldif
I get a error message:
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
I've looked up chapter 3.3.13 "Generalized Time" in RFC4517 which provides the following examples:
Examples:
199412161032Z
199412160532-0500
Both example values represent the same coordinated universal time:
10:32 AM, December 16, 1994.
As you might notice, I even copy-pasted the first example to my ldif file, to no avail. Could someone enlighten me what's wrong with this syntax?
Forgot to mention that I also tried with a unix timestamp
pwdlastset: 1643988710
which yields the same error message.
Update:
When I change the changetype
from add
to modify
and remove the objectClass
(as suggested in EricLavault's answer) like this:
dn: cn=test,dc=example,dc=com
changetype: modify
add: pwdLastSet
pwdLastSet: 1643988710
I get the following error:
$ 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
When I then add the objectClass
definition again like this
dn: cn=test,dc=example,dc=com
changetype: modify
objectClass: passwordLastSet
add: pwdLastSet
pwdLastSet: 1643988710
I get the following error:
$ 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"
I tried some other modify operation types (replace
), but nothing worked. Still stuck here.
The thing (which is not obvious at first glance) is that ldapmodify
allows to add entries, in which case you set changetype: add
.
You want to modify an existing entry, so you should set changetype: modify
in order to add: pwdLastSet
or (replace|delete).
If you also need to add objectClass: passwordLastSet
to the entry or other changes, note that every operation (add|replace|delete) must be separated, eg.
dn: cn=test,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: passwordLastSet
-
add: pwdLastSet
pwdLastSet: 199412161032Z
Also if I'm not wrong, the PwdLastSet
attribute is only implemented in Active Directory.
If you are using OpenLDAP you should probably use the PwdPolicy
auxiliary class (ppolicy overlay).