现在很多ldap文档不太适合centos7下安装使用ldap,于是自己搓了一篇作为留底
LDAP基础概念:
在开始部署前,要了解一些LDAP知识点:
条目 entry
区别名/唯一标识名 Distinguished Name / DN
属性 attribute
LDAP的条目(entry) 是 具有区别名(Distinguished Named/DN唯一标识名)的属性(attribute)。
DN是用来引用条目的,是唯一的,相当于关系型数据库中的主键。
属性有类型(type)和一个或者多个值(value)组成,相当于关系型数据库中的字段。
Schema
schema是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)
- Matching Rules
是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配
安装配置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
{SSHA}miSysgq9/+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={2}hdb.ldif文件中更新。建议不要手动编辑LDAP配置,因为每次运行ldapmodify命令时都会丢失更改。
使用单独配置进行配置和导入到 LDAP
ldif文件的空格 空格不可忽略
第一段中olcSuffix 修改为自己的dc,一般是自己的组织域名
第二段中olcRootDN 设定管理员DN
第三段中olcRootPW修改为上一条命令中生成密文,即管理员口令
cat > 01initDB.ldif << EOF
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=xxx,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=xxx,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}miSysgq9/+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: [email protected]
mobile: 13888888888
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: neil
uid: 1001
uidnumber: 1001
userpassword: [email protected]
EOF
ldapadd -f staff.ldif -x -D cn=admin,dc=xxx,dc=com -w 123456
添加单独账户
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: [email protected]
mobile: 13888888888
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: posixAccount
objectclass: top
sn: neil
uid: 1001
uidnumber: 1001
userpassword: [email protected]
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,允许谁访问
添加:
Require all 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
例如: http://IP/phpldapadmin
转载处:搭建openldap与phpldapadmin_51CTO博客_openldap phpldapadmin