搭建openldap与phpldapadmin

案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述搭建openldap与phpldapadmin相关的知识,希望能为你提供帮助。
现在很多ldap文档不太适合centos7下安装使用ldap,于是自己搓了一篇作为留底
LDAP基础概念
在开始部署前,要了解一些LDAP知识点:
条目 entry区别名/唯一标识名 Distinguished Name / DN
属性 attribute LDAP的条目(entry) 是 具有区别名(Distinguished Named/DN唯一标识名)的属性(attribute)。
DN是用来引用条目的,是唯一的,相当于关系型数据库中的主键。
属性有类型(type)和一个或者多个值(value)组成,相当于关系型数据库中的字段。
Schemaschema是LDAP的一个重要组成部分,类似于??数据库??的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,比如一个 objectclass会有哪些属性,这些属性又是什么结构等等,schema给LDAP服务器提供了LDAP目录中类别,属性等信息的识别方式,让这些 可以被LDAP服务器识别。
      在LDAP的schema中,有四个重要的元素:
      1. Objectclass
      objectclass定义了一个类别,这个类别会被不同的目录(在LDAP中就是一个Entry)用到,它说明了该目录应该有哪些属性,哪些属性是必须 的,哪些又是可选的。一个objectclass的定义包括名称(NAME),说明(DESC),类型(STRUCTURAL或AUXILARY ,表示是结构型的还是辅助型的),必须属性(MUST),可选属性(MAY)等信息。
      2. Attribute
      attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。
      3. Syntax
      syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)
      4. Matching Rules
      是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配。
安装配置LDAPLDAP结构
yum安装、启动LDAP

yum install openldap openldap-clients openldap-servers
service slapd start

初始化LDAP
初始状态下,LDAP是一个空目录,即没有任何数据。可通过程序代码向目录数据库中添加数据,也可使用OpenLDAP客户端工具ldapadd命令来完成添加数据的操作,该命令可将一个LDIF文件中的条目添加到目录。因此,需要首先创建一个LDIF文件,然后再进行添加操作。
生成 LDAP 管理员SSHA口令
这里用123456作示例,注意生成的ssha,后续要用到
slappasswd -h SSHA -s 123456
SSHAmiSysgq9/+ss47VncHRuqyhaHJ2oLI+7

配置管理员信息与DC
OpenLDAP服务器配置文件位于 /etc/openldap/slapd.d/ 。要开始配置LDAP,我们需要更新变量 “olcSuffix” 和 “olcRootDN“
  • olcSuffix - 数据库后缀,它是LDAP服务器提供信息的域名。简单来说,更改为自己的域名。
  • olcRootDN - 具有对LDAP执行所有管理活动的无限制访问权限的用户的根专有名称(DN)条目,如root用户。
  • olcRootPW - 上述RootDN的LDAP管理员口令。
以上条目需要在/etc/openldap/slapd.d/cn=config/olcDatabase=2hdb.ldif文件中更新。建议不要手动编辑LDAP配置,因为每次运行ldapmodify命令时都会丢失更改。
使用单独配置进行配置和导入到 LDAP
ldif文件的空格 空格不可忽略
?第一段中olcSuffix 修改为自己的dc,一般是自己的组织域名?
?第二段中olcRootDN 设定管理员DN?
?第三段中olcRootPW修改为上一条命令中生成密文,即管理员口令?
cat > 01initDB.ldif < < EOF
dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=xxx,dc=com

dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=xxx,dc=com

dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: SSHAmiSysgq9/+ss47VncHRuqyhaHJ2oLI+7
EOF



执行修改
ldapmodify -Y EXTERNAL-H ldapi:/// -f 01initDB.ldif

参考 ?????https://blog.csdn.net/u011607971/article/details/86061767?????
以上操作,算是完成LDAP?管理员账户?的初始化 即cn=admin,dc=xxx,dc=com口令为123456
如果将LDAP作为一个账户统一管理工具,我们要做的是
添加schema
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif



建立base
建立组织 Base organization组织单元 organizationalUnit 账号 等 03.ldif
$cat > 03addorg.ldif < < EOF
# xxx.com
dn: dc=xxx,dc=com
dc: xxx
o: xxx
objectClass: dcObject
objectClass: organization
#manager
dn: cn=manager ,dc=xxx,dc=com
objectClass: organizationalRole
cn: manager
description: LDAP Manager
# user, xxx.com
dn: ou=user,dc=xxx,dc=com
ou: user
objectClass: organizationalUnit
EOF
ldapadd -f 03addorg.ldif -x -D cn=admin,dc=xxx,dc=com -w 123456
Enter LDAP Password:
adding new entry "dc=xxx,dc=com"



添加单独账户
cat > staff.idlf < < EOF
dn: cn=staff,ou=user,dc=xxx,dc=com
cn: neil
description: ooelicloud LDAP entry
displayname: staff
gidnumber: 1000
homedirectory: /home/staff
mail: staff@xxx.com
mobile: 13888888888
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: neil
uid: 1001
uidnumber: 1001
userpassword: xxxxxx@staff.com
EOF
ldapadd -f staff.ldif -x -D cn=admin,dc=xxx,dc=com -w 123456



其他常用操作
  测试添加的账户结果
ldapsearch -D "cn=manager,dc=xxx,dc=com" -w 123456 -h 127.0.0.1 -b "dc=xxx,dc=com"

修改用户口令
ldappasswd -s guoguo -W -D "cn=manager,dc=xxx,dc=com" -x "cn=guoguo,ou=user,dc=tangotz,dc=com" -h ldap.tangotz.com

?-s: 指定用户名的口令
-x: 指定的DN
-D: 要对LDAP服务器进行身份验证的可分辨名称??
phpLDAPAdmin的搭建安装
yum install epel-release
yum install httpd phpldapadmin -y

配置phpldapadmin
?1)修改phpldapadmin的配置文件,访问控制权限?
vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问
添加:
Requireall granted
Allow from all


?2)修改配置文件:vim /etc/phpldapadmin/config.php?
$servers-> setValue(login,attr,dn);       这一行的注释去掉
//$servers-> setValue(login,attr,uid);   这一行注释掉
?3)重启httpd服务?
service httpd restart

访问phpldapadmin在浏览器输入OpenLDAP服务端的IP
【搭建openldap与phpldapadmin】例如:?????http://IP/phpldapadmin?????

    推荐阅读