网上的教程一大堆,也没用具体说明版本,因此不少操做方法都不同,把我踩过的坑记录下来html
环境:git
Centos7sql
OpenLdap 2.4.44 数据库
openldap新版本和老版本的配置方法差异特别大apache
安装步骤vim
1.yum安装OpenLdap
#yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtoolsapi
2.生成管理密码
#slappasswd -s Your_P@ssw0rd
{SSHA}J8D5Vzhe1HVmdj3jl83UeT4uO3LPYcUMapp
3.编辑配置dom
#cd /etc/openldap/slapd.d/cn\=configgitlab
修改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功能,步骤以下
一、在/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
二、执行命令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/52538365http://www.bubuko.com/infodetail-1795667.html