On CentOS, updating OpenLDAP from 2.4.44-13.el7
to 2.4.44-15.el7_5
caused us a failure because the ppolicy schema has changed:
Checking configuration file failed:
5b5738e8 User Schema load failed for attribute "pwdMaxRecordedFailure". Error code 17: attribute type undefined
5b5738e8 config error processing olcOverlay={0}ppolicy,olcDatabase={1}bdb,cn=config: User Schema load failed for attribute "pwdMaxRecordedFailure". Error code 17: attribute type undefined
slaptest: bad configuration file!
The fix is to manually add the missing attribute via this script (inlined below in case it disappears).
get_dn () {
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config 2>/dev/null \
| grep -e '^dn: *cn=[{].*[}]ppolicy,cn=schema,cn=config$'
}
gen_ldif () {
cat << EOF
$1
add: olcAttributeTypes
olcAttributeTypes: {16}( 1.3.6.1.4.1.42.2.27.8.1.30 NAME 'pwdMaxRecordedFailur
e' EQUALITY integerMatch ORDERING integerOrderingMatch SYNTAX 1.3.6.1.4.1.
1466.115.121.1.27 SINGLE-VALUE )
EOF
}
DN=`get_dn`
gen_ldif "$DN" | ldapmodify -Y EXTERNAL -H ldapi:///
Ideally, this needs to be applied before the upgrade, but if your LDAP’s already down you need to downgrade, run the script, then upgrade again.
yum downgrade openldap-servers openldap-clients openldap-devel openldap