前言

接之前我的文章,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. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

  2. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  3. 【项目管理】GitHub使用操作指南

    GitHub使用操作指南 作者:白宁超 2016年10月5日18:51:03> 摘要:GitHub的是版本控制和协作代码托管平台,它可以让你和其他人的项目从任何地方合作.相对于CVS和SVN的联 ...

  4. 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议114~117)

    建议114:不要在构造函数中抛出异常 Java异常的机制有三种: Error类及其子类表示的是错误,它是不需要程序员处理也不能处理的异常,比如VirtualMachineError虚拟机错误,Thre ...

  5. 太多选择——企业如何选择合适的BI工具?

    在没认清现状前,企业当然不能一言不合就上BI. BI不同于一般的企业管理软件,不能简单归类为类似用于提高管理的ERP和WMS,或用于提高企业效率的OA.BPM.BI的本质应该是通过展现数据,用于加强企 ...

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

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

  7. React Native环境配置之Windows版本搭建

    接近年底了,回想这一年都做了啥,学习了啥,然后突然发现,这一年买了不少书,看是看了,就没有完整看完的.悲催. 然后,最近项目也不是很紧了,所以抽空学习了H5.自学啃书还是很无趣的,虽然Head Fir ...

  8. Lucene4.4.0 开发之排序

    排序是对于全文检索来言是一个必不可少的功能,在实际运用中,排序功能能在某些时候给我们带来很大的方便,比如在淘宝,京东等一些电商网站我们可能通过排序来快速找到价格最便宜的商品,或者通过排序来找到评论数最 ...

  9. JQuery阻止事件冒泡

    冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点 ...

  10. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...