何为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 内容如下:
#!/bin/bashecho "install ldap rpm"wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpmrpm -ivh epel-release-latest-7.noarch.rpmyum install -y openldap openldap-clients openldap-servers migrationtools openldap-devel compat-openldapcp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown ldap. /var/lib/ldap/DB_CONFIGsystemctl start slapdsystemctl enable slapd
安装完成后,运行slapd -VV命令查看版本,如下图所示,即安装成功。
slapd服务监听端口为389
配置ldap
- 安装完成后,默认配置目录位置:/etc/openldap/slapd.d/
- 安装完成后的目录结构

设置ldap管理员密码:
运行命令: slappasswd -s dksou2019 (也可不加-s参数) ,得到加密后的密码: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKX (记住此密码,后面导入ldif文件会用到)
定义ldif文件
文件格式为LDAP Input Format(ldif),ldap目录特定的格式。
官方建议不要直接修改配置文件,ldap的配置修改,需要自己手动定义后缀名为.ldif的文件,然后执行ldapmodify命令进行修改。
例如:要修改域名,则可以新建一个changedomain.ldif ,内容如下(可以查看官网示例和网上教程)
新建的文件名称无所谓,方便辨别即可,但是后缀名一定要是.ldif
changepwd.ldif 添加密码**
dn: olcDatabase={0}config,cn=configchangetype: modifyreplace: olcRootPWolcRootPW: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKX
导入到ldap中:ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif
这里推荐一个修改密码的脚本:
#!/bin/bashadmin_pass=`slappasswd -s admin`echo "admin pass is: ${admin_pass}"sed "s!<pass>!${admin_pass}!g" rootdn.ldif > tmp.ldifecho "备份默认配置"cp /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif.bakecho "将要修改的内容:"cat tmp.ldifldapmodify -Q -Y EXTERNAL -H ldapi:/// -f tmp.ldifecho "修改后的变化"diff /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif.bak
changedomain.ldif 修改域名
# replace to your own domain name for "dc=***,dc=***" section# specify the password generated above for "olcRootPW" sectiondn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"read by dn.base="cn=Manager,dc=dks,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffixolcSuffix: dc=dks,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDNolcRootDN: cn=Manager,dc=dks,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootPWolcRootPW: {SSHA}xhGvrC4ZrvprqHoAHUCKUysljSydrqKXdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcAccessolcAccess: {0}to attrs=userPassword,shadowLastChange bydn="cn=Manager,dc=dks,dc=com" write by anonymous auth by self write by * noneolcAccess: {1}to dn.base="" by * readolcAccess: {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数据库的文件)
#修改域名dn: dc=dks,dc=comobjectClass: dcObjectobjectclass: organizationo: dksdc: dks#目录管理员dn: cn=Manager,dc=dks,dc=comobjectClass: organizationalRolecn: Managerdescription: Directory Manager#添加组织单元dn: ou=aCompany,dc=dks,dc=comobjectClass: organizationalUnitou: aCompanydn: ou=bCompany,dc=dks,dc=comobjectClass: organizationalUnitou: bCompany
执行命令进行导入:ldapadd -x -D “cn=Manager,dc=dks,dc=com” -w 123456 -f base.ldif
导入基本Schema:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
安装phpladpadmin
- 一个可视化的php web phpldapadmin.
- 安装:yum install httpd phpldapadmin -y

