前言

接之前我的文章,django+ldap+memcache实现单点登录+统一认证 就单点登录实现过程进行详细记录,ldap是一切的基础,可以把它理解成一个读强写弱的文件类型数据库,统一认证我们通过ldap来实现,里边保存了账户信息。为什么不用其他的关系型数据库呢?我这里的需求是因为在使用的很多软件默认都支持ldap,比如我们后续要接入的svn、vpn、jira等,使用ldap可以更方便一些。

ldap相关部署的文档网上资料比较多,这边就不着重说明了,请参考这篇文章http://www.cnblogs.com/AloneSword/p/4758814.html

写的很细致了,我这边使用的场景是,未使用tls传输加密,配置了openldap的双主(通过mirrormode),通过ldap account manager对用户和组进行管理

补充说明

上边的文章中,lam讲解的相对不多。我这边再补充一些

其实我自己的生产环境最后用的是lam进行管理,全称ldap account manager

先从官网下载rpm

yum install ldap-account-manager-5.5-0.fedora.1.noarch.rpm

对应的配置自动放进了apache的目录里

lam的核心配置在/usr/share/ldap-account-manager/config/lam.conf 但其实这个文件不需要人工编辑,直接从管理页面编辑



基本上所有信息都可以通过页面配置了,这个细说起来篇幅会非常多。因为是中文界面,官网也有demo进行参考,这边就不额外说明如何通过浏览器配置lam本身了。官网:https://www.ldap-account-manager.org/lamcms/

默认lam的登录用户为manager这个是在/etc/openldap/slapd.conf 中配置的,关键参数为rootdn相当于超级管理员,我们为了后续程序调用,可以写入ldap,最好再新建一个ldap可写用户,首先可以通过lam创建一个普通用户,之后在配置文件中授予这个用户更大的权限,之后/etc/init.d/slapd restart

access to *
by dn="uid=ssoadmin,ou=People,dc=ldap,dc=test,dc=net" write
by self write
by users read
by anonymous auth

同时可以在lam中配置一下,以便通过lam的用户可以进行管理



添加一个ssoadmin,这样在登录时就可以选择ssoadmin用户了



当然这个用户的密码是在用户信息里设置的(可通过lam控制),但此用户所有的权限都通过配置文件完成

最终,我的账户类型用的是



属性列表即为lam首页显示的信息,可根据属性列表自己定义,另外我的用户和组的模块是如下配置



ldap可定义的对象类非常的多,可以参考schema浏览器自行学习,选择你需要的类型



这个要说起来,感觉写本书都够了,ldap本身的配置类型还是非常丰富并且复杂的,有兴趣的可以自行学习/etc/openldap/schema目录下的ldif和schema配置,如果自带的配置无法满足需求,也可以自定义ldif,通过自定义schema来生成ldif,这块自我感觉十分复杂,好在我的需求只是需要用户和组的关系,用户的关键信息有邮箱、中文名、用户名(再加个手机)就够了,这样使用inetOrgPerson\posixAccount\posixGroup刚好够用,并且lam默认对posix的2个模块支持的很好,可以较为方便的通过页面设定用户和组关系。





ldap的备份和还原

备份:
ldapsearch -x -b "dc=ldap,dc=test,dc=net" -D "cn=Manager,dc=ldap,dc=test,dc=net" -w "password" > ldap.ldif
删除:
ldapdelete -x -c -D "cn=Manager,dc=ldap,dc=test,dc=net" -w "password" -r 'dc=ldap,dc=test,dc=net'
还原:
ldapadd -x -c -D "cn=Manager,dc=ldap,dc=test,dc=net" -w "password" -f ldap.ldif
因为我的ldap做了mirror,只需在一台还原即可,另一台稍等一会会自动同步

最后附上一个日常备份的脚本,请放在每日2点运行,由于做了双机mirror,不担心某台ldap down机,日常的备份是用于减少误删除数据的损失

#!/bin/bash
rq=$(date +%Y%m%d)
LOG=/Data/shell/ldap_backup/logs/${rq}.log
BACKUPDATA=/Data/shell/ldap_backup/data
BACKUPCMD=/usr/bin/ldapsearch
LDAPUSER="cn=Manager,dc=ldap,dc=test,dc=net"
LDAPPASSWD="password"
LDAPBN="dc=ldap,dc=test,dc=net"
mkdir -p /Data/shell/ldap_backup/logs
fenge="=============="
echo ${fenge} >> ${LOG} mkdir -p $BACKUPDATA/
# backup everyday at 2:00
cd $BACKUPDATA/
$BACKUPCMD -x -b ${LDAPBN} -D ${LDAPUSER} -w ${LDAPPASSWD} > ldap_${rq}.ldif
/bin/tar zcf ldap_${rq}.tar.gz ldap_${rq}.ldif && echo "tar zcf ldap_${rq}.ldif --- [OK]">>${LOG} || echo "tar zcf ldap_${rq}.ldif --- [FAILED]">>${LOG} find $BACKUPDATA -name "*.ldif" -mtime +3 -exec rm -f {} \;
find $BACKUPDATA -name "*.tar.gz" -mtime +30 -exec rm -f {} \;

还原脚本

#!/bin/bash

if [ -z $1 ];then
echo "请输入参数1"
echo "Usage: $0 /Data/shell/ldap_backup/data/ldap_20161110.ldif"
exit 2
fi LOG=/Data/shell/ldap_backup/logs/${rq}.log
BACKUPDATA=/Data/shell/ldap_backup/data
DELCMD=/usr/bin/ldapdelete
RECCMD=/usr/bin/ldapadd
LDAPUSER="cn=Manager,dc=ldap,dc=test,dc=net"
LDAPPASSWD="password"
LDAPBN="dc=ldap,dc=test,dc=net" # delete all
echo "确认删除ldap原有数据并恢复?(y/n)"
read deleteldap
if [[ "$deleteldap" == 'y' ]];then
${DELCMD} -x -c -D ${LDAPUSER} -w ${LDAPPASSWD} -r ${LDAPBN}
# recovery ldap data
${RECCMD} -x -c -D ${LDAPUSER} -w ${LDAPPASSWD} -f $1
fi

参考资料

http://www.cnblogs.com/AloneSword/p/4758814.html

https://segmentfault.com/a/1190000002607140

ldap部署相关,ldap双机\LAM配置管理\ldap备份还原的更多相关文章

  1. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

  2. ldap配置系列三:grafana集成ldap

    ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...

  3. 【运维技术】node项目使用strongloop进行部署相关教程

    node项目使用strongloop进行部署相关教程 安装strongloop 下载安装node 解压到路径完成安装 使用软链方式配置环境变量 添加cnpm的淘宝镜像源 安装node-gyp的模块依赖 ...

  4. CentOS7 下 ldap 部署

    环境准备 # 关闭防火墙以及selinux,生产环境中,以实际需求为准 [root@localhost ~]# hostnamectl --static set-hostname ldap-serve ...

  5. HDP安全之集成kerberos/LDAP、ranger(knox自带LDAP)

    ----------------------目录导航见左上角------------------------------- 环境 HDP 3.0.1.0 (已有) JDK   1.8.0_91 (已有 ...

  6. Spring整合Redis&JSON序列化&Spring/Web项目部署相关

    几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...

  7. 1.scrapyd部署相关问题

    部署scrapy爬虫项目到6800上 启动scrapyd 出现问题 1: scrapyd-deloy -l  未找到相关命令 scrapyd-deploy -l 可以看到当前部署的爬虫项目,但是当我输 ...

  8. ASP.NET站点部署相关

    汤姆大叔的部署指南:http://www.cnblogs.com/TomXu/archive/2011/11/25/2263050.html 中文目录: 部署介绍 --(英文版连接) 部署SQL Se ...

  9. golang 应用的部署相关技术

    nohup命令 在 linux 下面部署,我们可以利用 nohup 命令,把应用部署在后端,如下所示: nohup ./yourapp & 这样你的应用就跑在了 Linux 系统的守护进程 n ...

随机推荐

  1. sublime常用快捷键

    自己觉得比较实用的sublime快捷键: Ctrl + /  ---------------------注释 Ctrl + 滚动 --------------字体变大/缩小 Ctrl + N----- ...

  2. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  3. 深入理解javascript的getTime方法

    1.理解getTime getTime() 方法返回一个时间的格林威治时间数值. 可以使用这个方法把一个日期时间赋值给另一个Date 对象. 语法: dateObj.getTime() 参数: 无. ...

  4. bzoj3208--记忆化搜索

    题目大意: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目.    我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于] ...

  5. web服务器集群

    概述 集群和分布式都是从集中式进化而来的.分布式和集群会相互合作的,同时的集群和分布式.在这里重点说说集群 集群是什么? 集群能提高单位时间内处理的任务数量,提升服务器性能 有多台服务器去处理任务,但 ...

  6. 【SAP业务模式】之ICS(五):定价配置

    本篇博文讲述ICS业务中的定价配置. 1.定义销售订单类型 目录:SPRO-销售与分销-销售-销售凭证-销售凭证抬头-定义销售凭证类型 事务代码:VOV8 2.定义销售订单类型 目录:SPRO-销售与 ...

  7. hadoop 2.4 遇到的问题

    不管出什么问题,首先查看日志. 在启动过hadoop的前提下,打开浏览器,输入http://localhost:50070 点击Utilities下的logs,选择hadoop-root-datano ...

  8. 我的MYSQL学习心得(十六) 优化

    我的MYSQL学习心得(十六) 优化 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  9. .NET Core 1.0.1 升级汇总

    ASP.NET Core BUG fix: ASP.NET Routing Port fix for "Request not matching route with defaults&qu ...

  10. GO 基础(一)

    Go语言基础工程目录如下(采用LiteIDE): 备注:需要提前设置GOPATH,即工作目录,bin.pkg.src为默认的GO工程目录结构.GOPATH可以支持多个,在windows下配置在环境变量 ...