OpenLDAP 服务端配置(二): 允许用户自行修改密码


默认配置下, 用户无法自行修改密码, 需另行配置

注意:下面操作中 “cn=admin,dc=domain,dc=com” 需要替换为自己的root/admin dn

1. 修改slapd.conf文件(默认安装在/etc/openldap下)

#找到下面几条,去掉前面的井号
modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap
modeleloda ppolicy.la

2.slapd.conf文件在database config前面加上两个字段

access to attrs=userPassword
 by self write
 by anonymous auth
 by dn="cn=admin,dc=domain,dc=com" write
 by * none

access to *
 by self write
 by dn="cn=admin,dc=domain,dc=com" write
 by * none

3. slapd.conf配置文件末尾添加:

overlay ppolicy
ppolicy_default cn=admin,dc=domain,dc=com

4. 然后重新生成数据库配置文件

rm -rf /etc/openldap/slapd.d/*
[root@ll ~]$ slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

5.增加 acl 规则
在配置文件 /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif 中最后增加acl规则:

olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=admin,dc=domain,dc=com" write by anonymous auth by * none
olcAccess: {1}to * by dn.base="cn=admin,dc=domain,dc=com" write by self write by * read


6.修改文件校验值
上述文件内容改了, 文件校验值就会发生变化, 需要修改文件中第二行的校验值

# 安装工具包
yum install -y perl-Archive-Zip
# 截取除了文件前两行以外的内容
tail -n +3 /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif  \
      > /tmp/temp.ldif
# 计算校验值
crc32 /tmp/temp.ldif
# 将crc32 输出的校验值更新到原ldif 文件(/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif)的第2行中(虽然是被#号注释的)

7. 修改权限, 并重启服务

chown -R ldap:ldap /etc/openldap/*
chown -R ldap:ldap /var/lib/ldap
/etc/init.d/slapd restart

参考:

OpenLDAP 服务端配置(二): 允许用户自行修改密码