As ACLs, no openldap, são sempre avaliadas de cima para baixo da lista de linhas numeradas {0}, {1}, .. Assim que uma condição é atendida, a avaliação é imediatamente parou (assumindo que a pausa não foi usada).
Nas ACLs padrão definidas pelo Ubuntu e compatíveis, existe a linha:
olcAccess: {2} para * por * leia
para * por *: encontrou tudo, adicionar linhas depois não tem efeito algum.
A solução discutida em este link e acima deve resolver o seu problema, sugiro você tenta esta lista ACL:
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to dn.subtree="ou=Users,dc=ldapserver,dc=com"
by group/groupOfUniqueNames/uniqueMember="cn=Admins,dc=ldapserver,dc=com" write
e altere a objectClass do grupo admins para groupOfUniqueNames.