Назад | Перейти на главную страницу

OpenLDAP: атрибут pwdChangedTime не создается после изменения пароля?

Я собираюсь интегрировать Мультисайт check_mk с OpenLDAP. После настройки соединителя LDAP я получаю следующую ошибку при открытии страницы «Пользователи и контакты»:

Error executing sync hook
The "Authentication Expiration" attribute (pwdchangedtime) could not
be fetchedfrom the LDAP server for user {u'cn': [u'noreply']}.

Вот все шаги, которые я сделал для реализации наложения политики паролей:

Установите оверлейные модули для сервера OpenLDAP:

yum install openldap-servers-overlays

Добавьте следующие строки в /etc/openldap/slapd.conf:

include     /etc/openldap/schema/ppolicy.schema

modulepath  /usr/lib64/openldap
moduleload  ppolicy.la

затем я перезапускаю OpenLDAP и пытаюсь изменить пароль. Я уверен, что он успешно изменен, но я не вижу pwdChangedTime атрибут при запуске ldapsearch:

$ ldapsearch -x -D "cn=Manager,dc=domain,dc=com" -y .passwd.cnf "cn=noreply"
dn: cn=noreply,ou=it,dc=domain,dc=com
cn: noreply
mail: noreply at domain.com
maildrop: noreply at domain.com
sn: No
uid: noreply
objectClass: inetOrgPerson
objectClass: mailUser
objectClass: organizationalPerson
objectClass: person
objectClass: top
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
pwdAttribute: userPassword
pwdMaxAge: 31536000
pwdMinAge: 60
pwdAllowUserChange: TRUE
userPassword: {MD5}xx

Я что-то пропустил?

Собственно, pwdChangedTime атрибут уже создан, но поскольку это рабочий атрибут, по умолчанию он не возвращается. Вы должны сделать ldapsearch с этим именем:

$ ldapsearch -x -D "cn=Manager,dc=domain,dc=com" -W "cn=noreply"
pwdChangedTime
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: cn=noreply
# requesting: pwdChangedTime
#

# noreply, it, domain.com
dn: cn=noreply,ou=it,dc=domain,dc=com
pwdChangedTime: 20130128154849Z

или добавьте плюс (+) к ldapsearch:

# ldapsearch -x -D "cn=Manager,dc=domain,dc=com" -y .passwd.cnf "cn=noreply" +
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: cn=noreply
# requesting: + 
#

# noreply, it, domain.com
dn: cn=noreply,ou=it,dc=domain,dc=com
structuralObjectClass: inetOrgPerson
entryUUID: 047e7ce6-3b99-1031-83cb-afef2344189c
creatorsName: cn=Manager,dc=domain,dc=com
createTimestamp: 20120526161012Z
pwdChangedTime: 20130129032710Z
entryCSN: 20130129032710Z#00003a#00#000000
modifiersName: cn=Manager,dc=domain,dc=com
modifyTimestamp: 20130129032710Z
entryDN: cn=noreply,ou=it,dc=domain,dc=com
subschemaSubentry: cn=Subschema
hasSubordinates: FALSE

Чтобы добавить этот атрибут ко всем пользователям, созданным до реализации наложения политики паролей, вы можете просто обновить userPassword с тем же значением:

ldapsearch -x -D cn=Manager,dc=domain,dc=com -W -y .passwd.txt -L
"(&(objectclass=person)(!(pwdChangedTime=*)))" userPassword
     | sed '/dn: /a\changetype: modify\nreplace: userPassword'
         | ldapmodify -x -D cn=Manager,dc=domain,dc=com -y .passwd.txt -W