给内部系统接统一认证,需要一台LDAP服务器做测试。网上教程一半是CentOS 6时代的,照着敲openldap-servers的yum命令,在Ubuntu上直接报找不到包。发行版不同,装法差得挺远,先选对路子再动手。

Debian和Ubuntu上装

apt install slapd ldap-utils  dpkg-reconfigure slapd

装slapd时弹窗会问管理员密码和域名,填错了不要紧,用dpkg-reconfigure重来一遍。域名填example.com,它会自动转成dc=example,dc=com作为后缀。重配置时有个问句是是否清除旧数据库,测试环境选是,生产环境千万选否,选错数据直接没。

CentOS和RHEL上装

CentOS 7的包名是openldap-servers和openldap-clients,用yum装上就行。CentOS 8之后这两套包从默认仓库移走,得改用389-ds。用openldap的话启动后要手动补配置:把/usr/share/openldap-servers/DB_CONFIG.example拷成/var/lib/ldap/DB_CONFIG,再导入core、cosine、inetorgperson三个schema,少一个后面加用户就报objectClass未定义。schema路径在slapd.conf的include行里,路径写错服务起不来。

怎么确认装好了

slapcat  ldapsearch -x -H ldap://127.0.0.1 -b dc=example,dc=com

slapcat能输出内容,说明数据库已经起来了。ldapsearch返回结果0且没有报错,链路就通了。远程连不上先查防火墙,389和636两个端口,CentOS上加防火墙规则后reload。用IP连时注意,默认配置可能只监听127.0.0.1,要把监听地址改成0.0.0.0或者具体网卡地址。

改配置的两条路

老版本改slapd.conf,改完重启服务。2.4之后推荐用cn=config,配置本身也存成LDAP条目,用ldapmodify改,改完立即生效不用重启。两种方式不能混用,混着改会出现改了没反应的情况,排查半天白费。新手建议先用slapd.conf,看得见摸得着,熟悉了再迁到cn=config。

  • 只是测试:用Docker跑osixia/openldap,一条命令起服务,比装包快得多。
  • 要图形管理:装phpLDAPadmin或者Apache Directory Studio。