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
Centos7 下Yum安装OpenLdap的更多相关文章
- centos7 下 yum 安装Nginx
centos7 下 yum 安装和配置 Nginx 添加yum源 Nginx不在默认的yum源中,可以使用epel或者官网的yum源,这里使用官网的yum源 rpm -ivh http://nginx ...
- CentOS7 下 yum 安装 Docker CE
前言 Docker 使用越来越多,安装也很简单,本次记录一下基本的步骤. Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10. Docker 官网有安装步骤,本文只是记录 ...
- Centos7下yum安装kubernetes
一.前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上 ...
- 【转】Centos7下Yum安装PHP5.5,5.6,7.0
默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 ...
- Centos7下yum安装配置nginx与php
实现LNMP环境搭建. 开始安装Nginx和PHP-FPM之前,首先卸载系统中以前安装的Apache和PHP保证安装不会冲突.用root登录输入下面的命令: yum remve httpd* php* ...
- Centos7下Yum安装PHP5.5,5.6,7.0
默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 ...
- CentOS7下yum安装Redis
(1).Redis概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value(键值型)数据库(非关系型数据库),并提供多种语言的API. Redi ...
- Centos7下yum安装mydql8
昨天安装mydql时总是报错缺少插件,虽然最后安装上了,但还是在此记录下 一. 安装centos7系统系统 在选择安装基本环境时,选择基本环境为"网页服务器",昨天我因为选择了&l ...
- Centos7下 yum安装php扩展
linux下, 使用thinkphp的模板标签,如 eq, gt, volist defined, present , empty等 标签时, 报错: used undefined function ...
随机推荐
- 一张图搞懂Ajax原理
本文整理在,我的github上.欢迎Star. 原理 说起ajax,就不得不说他背后的核心对象XMLHttpRequest,而说到XMLHttpRequest我觉得,从它的readyState状态说起 ...
- FAQ_1
FAQ LoadRunner录制脚本时为什么不弹出IE浏览器? 当一台主机上安装多个浏览器时,LoadRunner录制脚本经常遇到不能打开浏览器的情况,可以用下面的方法来解决. 启动浏览器,打开Int ...
- docker commit命令
docker commit命令用于基于一个容器来创建一个新的docker镜像. docker commit制作的镜像,除了制定镜像的人知道执行过什么命令,怎么生成的镜像,别人根本无从得知.建议使用的是 ...
- git获取特定版本的代码
比如取1.80版本 git clone -b https://github.com/passedbylove/poiji.git
- 走进异步编程的世界 - 在 GUI 中执行异步操作
转载:https://www.cnblogs.com/liqingwen/p/5877042.html 走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://w ...
- appium环境搭建步骤
前提条件是:搭建selenium环境(侵权删) 1.安装jdk,配置环境变量: JAVA_HOME C:\Program Files\Java\jdk1.8.0_60(jdk的存放路径) CLASSP ...
- Datafactory 实际使用案例
Datafactory 实际使用案例 一. 简介 QuestDataFactory 是一种快速的.易于产生测试数据工具,它能建模复杂数据关系,且有带有GUI界面.DataFactory是一 ...
- 【ABAP系列】SAP ABAP 带有参数的AMDP的创建
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 带有参数的AM ...
- C#编程 socket编程之TcpClient,TcpListener,UdpClient
应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务.这些协议类建立在 System.Net.So ...
- Android开发 互相调用模式之导出Jar包、扩展MainActivity、Java主导
首先讲导出Jar包,在以前都是用这种方法,但是现在官方不推荐使用此方法,官方推荐导出Aar包 (1)首先创建一个Android空工程 注意:这里选择API 16,因为Unity支持的最低是API 16 ...