前言

接之前我的文章,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. Android 自定义 attr

    好纠结,弄了一个下午老是报错如是总结一下安卓自定视图和自定义属性. (一)自定义属性 在Values文件下建立一个attrs.xml文件,attr的format可以参考:http://www.cnbl ...

  2. Android 6.0 权限知识学习笔记

    最近在项目上因为6.0运行时权限吃了亏,发现之前对运行时权限的理解不足,决定回炉重造,重新学习一下Android Permission. 进入正题: Android权限 在Android系统中,权限分 ...

  3. EntityFramework.Extended 支持 MySql

    EntityFramework.Extended 默认不支持 MySql,需要配置如下代码: [DbConfigurationType(typeof(DbContextConfiguration))] ...

  4. javascript函数

    array.sort(function(a, b){ return a -b ; } )   把数组 array 按照从小到大排序. [11, 22, 586, 10, -58, 86].sort(f ...

  5. 使用github远程仓库

    经过几天对github的研究,终于把自己想完成的给解决了,发现google真的有很多解释,但是很多也会出现一些bug,对于初学者真的很多烦恼,所以整理一份,能给初识github的你有所帮助 一,首先, ...

  6. Javascript中的valueOf与toString

    基本上,javascript中所有数据类型都拥有valueOf和toString这两个方法,null除外.它们俩解决javascript值运算与显示的问题,本文将详细介绍,有需要的朋友可以参考下. t ...

  7. 网站里加入QQ在线客服

    1.开启"QQ在线状态"服务  http://jingyan.baidu.com/article/b24f6c823425a586bfe5da1f.html http://www. ...

  8. WebStorm 2016 最新版激活(activation code方式)

    WebStorm 2016 最新版激活(activation code方式) WebStorm activation code WebStorm 最新版本激活方式: 今天下载最新版本的WebStorm ...

  9. C#移动跨平台开发(1)环境准备

    C#依托于mono平台可以实现Unix平台服务器端开发已经不是什么新鲜事了,而Xarmain公司(初始成员大多来自原Mono.MonoTouch.Mono For Android成员)继续将C#的先进 ...

  10. 无限分级和tree结构数据增删改【提供Demo下载】

    无限分级 很多时候我们不确定等级关系的层级,这个时候就需要用到无限分级了. 说到无限分级,又要扯到递归调用了.(据说频繁递归是很耗性能的),在此我们需要先设计好表机构,用来存储无限分级的数据.当然,以 ...