Centos7 下Yum安装OpenLdap

网上的教程一大堆,也没用具体说明版本,所以很多操作方法都不一样,把我踩过的坑记录下来

环境:

Centos7

OpenLdap 2.4.44 

openldap新版本和老版本的配置方法差别特别大

安装步骤

1.yum安装OpenLdap
#yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

2.生成管理密码
#slappasswd -s Your_P@ssw0rd
{SSHA}J8D5Vzhe1HVmdj3jl83UeT4uO3LPYcUM

3.编辑配置

#cd /etc/openldap/slapd.d/cn\=config

修改olcDatabase={2}hdb.ldif文件如下
#vim olcDatabase\=\{2\}hdb.ldif
olcRootPW: {SSHA}J8D5Vzhe1HVmdj3jl83UeT4uO3LPYcUM,这个密码就是上面生成的管理密码,然后修改域名信息:
olcSuffix: dc=domain,dc=com
olcRootDN: cn=root,dc=domain,dc=com

 

修改olcDatabase={1}monitor.ldif文件,如下:
#vim olcDatabase\=\{1\}monitor.ldif
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=cn=root,dc=domain,dc=com" read by * none

4.测试一下配置

 #slaptest -u 如果提示success 说明配置文件没有问题

5.配置OpenLDAP数据库
#cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
#chown ldap:ldap -R /var/lib/ldap
#chmod 700 -R /var/lib/ldap
注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

 

导入基本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
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

注意:这个根据个人需要,导入自己需要的schema

下面的步骤就是往OpenLdap里面插入用户,可做可不做,你也可以自己用ldap客户端插入数据,我先把他放在这

添加用户及用户组
默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。管理用户就是前面我们刚刚配置的root。
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:
添加用户组,使用如下命令:
groupadd ldapgroup1
groupadd ldapgroup2
添加用户并设置密码,使用如下命令:
useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
把刚刚添加的用户和用户组提取出来,这包括该用户的密码和其他相关属性,如下:
grep ":10[0-9][0-9]" /etc/passwd > /root/users
grep ":10[0-9][0-9]" /etc/group > /root/groups
根据上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif,如下:
生成ldif文件之前要先修改vim /usr/share/migrationtools/migrate_common.ph 文件,修改base_dn信息
vim /usr/share/migrationtools/migrate_common.ph
$DEFAULT_BASE = "dc=domain,dc=com";
保存后,执行如下脚本
/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif

配置openldap基础的数据库,如下:
cat /root/base.ldif

dn: dc=domain,dc=com
o: domain com
dc: domain
objectClass: top
objectClass: dcObject
objectclass: organization

dn: cn=root,dc=domain,dc=com
cn: root
objectClass: organizationalRole
description: Directory Manager

dn: ou=OP,dc=domain,dc=com
ou: OP
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=domain,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

执行如下命令导入基础数据、用户数据,组数据
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/base.ldif
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/usersldif
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/groups.ldif

用户和用户组全部导入完毕后,我们就可以查询OpenLDAP的相关信息。
查询OpenLDAP全部信息,使用如下命令:
ldapsearch -x -b "dc=domain,dc=com" -H ldap://127.0.0.1
ldapsearch -h 127.0.0.1 -D "cn=root,dc=domain,dc=com" -w "your_password" -b "dc=domain,dc=com" "(uid=testuser)"

参考资料 https://www.ilanni.com/?p=13775

 

 

因为需要在OpenLdap中添加组的功能,所以需要添加memberOf功能,步骤如下

1、在/etc/openldap目录下新建文件memberof_load_configure.ldif。内容如下:

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulepath: /usr/lib64/openldap
olcModuleload: {0}memberof.la

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof

说明:上面的参数请根据实际情况修改(比如32的系统的话olcModulepath为/usr/lib/openldap)
dn: cn=module{0},cn=config 如果/etc/openldap/slapd.d/cn=config目录下已经存在cn=module{0}.ldif 文件的话,你就需要修改 module后面的数字了
dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config 这行中 如果上述目录中没有olcDatabase={2}bdb.ldif文件就把 olcDatabase={2}bdb改成olcDatabase={2}hdb
2、执行命令ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。
至此memberof功能添加完成,你可以用客户端添加一个group试一下,我这边添加的group的ldif文件如下

dn: cn=gitlab,ou=Group,dc=domain,dc=com
objectClass: top
objectClass: groupOfNames
cn: gitlab
member: uid=testuser,ou=OP,dc=domain,dc=com

将上面代码保存为 addgroup.ldif,然后执行

ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f addgroup.ldif 即可添加成功

可以使用ldap的客户端连接试试看下效果,客户端可以使用apache开源的这个,下载地址

http://directory.apache.org/

 

参考资料:

https://blog.csdn.net/tongdao/article/details/52538365
http://www.bubuko.com/infodetail-1795667.html

 

posted @ 2018-04-24 16:10 Kevin_1967 阅读(...) 评论(...) 编辑 收藏