何为ldap?

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。按照我们对文件目录的理解,ldap可以看成一个文件系统,类似目录和文件树。

基本概念

名称 全称 含义
dc domain componet 域名部分,格式为example.com改为dc=example,dc=com
ou organization unit 组织单元,类似于Linux系统中的子目录
cn common name 公共名称,可以理解为用户名
dn distinguished name 惟一辨别名或专有名称,类似于Linux系统中的绝对路径,如“uid= tom,ou=market,dc=example,dc=com”
c country 国家
o organization 组织名

安装

  • 系统版本:CentOS7.7
  • ldap版本:openldap 2.4.44 (目前官网最新版本是2.4.48)
  • ldap服务安装:安装比较简单,直接yum安装,这里写成脚本ldap.sh
  • ldap是C/S架构,所以yun安装 openldap openldap-clients openldap-servers这三个组件即可完成安装

ldap.sh 内容如下:

  1. #!/bin/bash
  2. echo "install ldap rpm"
  3. wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  4. rpm -ivh epel-release-latest-7.noarch.rpm
  5. yum install -y openldap openldap-clients openldap-servers migrationtools openldap-devel compat-openldap
  6. cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  7. chown ldap. /var/lib/ldap/DB_CONFIG
  8. systemctl start slapd
  9. systemctl enable slapd

安装完成后,运行slapd -VV命令查看版本,如下图所示,即安装成功。
截屏2019-12-13下午4.41.23.png
slapd服务监听端口为389
截屏2019-12-13下午4.47.25.png

配置ldap

  • 安装完成后,默认配置目录位置:/etc/openldap/slapd.d/
  • 安装完成后的目录结构

image.png

  • 设置ldap管理员密码:

    运行命令: slappasswd -s dksou2019 (也可不加-s参数) ,得到加密后的密码: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKX (记住此密码,后面导入ldif文件会用到)

  • 定义ldif文件

文件格式为LDAP Input Format(ldif),ldap目录特定的格式。
官方建议不要直接修改配置文件,ldap的配置修改,需要自己手动定义后缀名为.ldif的文件,然后执行ldapmodify命令进行修改。
例如:要修改域名,则可以新建一个changedomain.ldif ,内容如下(可以查看官网示例和网上教程)
新建的文件名称无所谓,方便辨别即可,但是后缀名一定要是.ldif

changepwd.ldif 添加密码**

  1. dn: olcDatabase={0}config,cn=config
  2. changetype: modify
  3. replace: olcRootPW
  4. olcRootPW: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKX

导入到ldap中:ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

这里推荐一个修改密码的脚本:

  1. #!/bin/bash
  2. admin_pass=`slappasswd -s admin`
  3. echo "admin pass is: ${admin_pass}"
  4. sed "s!<pass>!${admin_pass}!g" rootdn.ldif > tmp.ldif
  5. echo "备份默认配置"
  6. cp /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif.bak
  7. echo "将要修改的内容:"
  8. cat tmp.ldif
  9. ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f tmp.ldif
  10. echo "修改后的变化"
  11. diff /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif.bak

changedomain.ldif 修改域名

  1. # replace to your own domain name for "dc=***,dc=***" section
  2. # specify the password generated above for "olcRootPW" section
  3. dn: olcDatabase={1}monitor,cn=config
  4. changetype: modify
  5. replace: olcAccess
  6. olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
  7. read by dn.base="cn=Manager,dc=dks,dc=com" read by * none
  8. dn: olcDatabase={2}hdb,cn=config
  9. changetype: modify
  10. replace: olcSuffix
  11. olcSuffix: dc=dks,dc=com
  12. dn: olcDatabase={2}hdb,cn=config
  13. changetype: modify
  14. replace: olcRootDN
  15. olcRootDN: cn=Manager,dc=dks,dc=com
  16. dn: olcDatabase={2}hdb,cn=config
  17. changetype: modify
  18. replace: olcRootPW
  19. olcRootPW: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKX
  20. dn: olcDatabase={2}hdb,cn=config
  21. changetype: modify
  22. add: olcAccess
  23. olcAccess: {0}to attrs=userPassword,shadowLastChange by
  24. dn="cn=Manager,dc=dks,dc=com" write by anonymous auth by self write by * none
  25. olcAccess: {1}to dn.base="" by * read
  26. olcAccess: {2}to * by dn="cn=Manager,dc=dks,dc=com" write by * read

导入ldap:ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

如果只是简单的安装测试ldap,你可以将你想要修改的配置,都放到一个ldif文件中,如下:
默认的管理员为Manager,可以修改为admin等等
新建base.ldif文件(有的教程中将这个当作初始化ldap数据库的文件)

  1. #修改域名
  2. dn: dc=dks,dc=com
  3. objectClass: dcObject
  4. objectclass: organization
  5. o: dks
  6. dc: dks
  7. #目录管理员
  8. dn: cn=Manager,dc=dks,dc=com
  9. objectClass: organizationalRole
  10. cn: Manager
  11. description: Directory Manager
  12. #添加组织单元
  13. dn: ou=aCompany,dc=dks,dc=com
  14. objectClass: organizationalUnit
  15. ou: aCompany
  16. dn: ou=bCompany,dc=dks,dc=com
  17. objectClass: organizationalUnit
  18. ou: bCompany

执行命令进行导入:ldapadd -x -D “cn=Manager,dc=dks,dc=com” -w 123456 -f base.ldif

导入基本Schema:

  1. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
  2. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
  3. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

安装phpladpadmin

  • 一个可视化的php web phpldapadmin.
  • 安装:yum install httpd phpldapadmin -y

截屏2019-12-15下午9.26.22.png