ldap部署相关,ldap双机\LAM配置管理\ldap备份还原
前言
接之前我的文章,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备份还原的更多相关文章
- ldap配置系列二:jenkins集成ldap
ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...
- ldap配置系列三:grafana集成ldap
ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...
- 【运维技术】node项目使用strongloop进行部署相关教程
node项目使用strongloop进行部署相关教程 安装strongloop 下载安装node 解压到路径完成安装 使用软链方式配置环境变量 添加cnpm的淘宝镜像源 安装node-gyp的模块依赖 ...
- CentOS7 下 ldap 部署
环境准备 # 关闭防火墙以及selinux,生产环境中,以实际需求为准 [root@localhost ~]# hostnamectl --static set-hostname ldap-serve ...
- HDP安全之集成kerberos/LDAP、ranger(knox自带LDAP)
----------------------目录导航见左上角------------------------------- 环境 HDP 3.0.1.0 (已有) JDK 1.8.0_91 (已有 ...
- Spring整合Redis&JSON序列化&Spring/Web项目部署相关
几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...
- 1.scrapyd部署相关问题
部署scrapy爬虫项目到6800上 启动scrapyd 出现问题 1: scrapyd-deloy -l 未找到相关命令 scrapyd-deploy -l 可以看到当前部署的爬虫项目,但是当我输 ...
- ASP.NET站点部署相关
汤姆大叔的部署指南:http://www.cnblogs.com/TomXu/archive/2011/11/25/2263050.html 中文目录: 部署介绍 --(英文版连接) 部署SQL Se ...
- golang 应用的部署相关技术
nohup命令 在 linux 下面部署,我们可以利用 nohup 命令,把应用部署在后端,如下所示: nohup ./yourapp & 这样你的应用就跑在了 Linux 系统的守护进程 n ...
随机推荐
- mac下安装及配置tomcat
mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...
- 创建APPID&&部署服务端教程
创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...
- 微软发布VSBT,无需安装Visual Studio即可实现项目编译
安装了Visual Studio的那些使用微软平台的开发者通常能够非常容易地操作自己的项目:打开解决方案,修改内容,设置好所有必须的文件以及配置后编译项目.但是在构建服务器或者持续交付系统等没有安装V ...
- Flexible 弹性盒子模型之CSS flex-grow 属性
实例 让第二个元素的宽度为其他元素的三倍: div:nth-of-type(1){flex-grow:1;} div:nth-of-type(2){flex-grow:3;} div:nth-of-t ...
- Html 制作相册
本文主要讲述采用Html5+jQuery+CSS 制作相册的小小记录. 主要功能点: Html5进行布局 调用jQuery(借用官网的一句话:The Write Less, Do More)极大的简化 ...
- 最近在玩linux时 yum 遇到了问题
主要是软件源出现了问题 我做的方式可能比较粗暴 ls -l /etc/yum.repos.d/ /*查看软件源*/ rm -rf /etc/yum.repos.d/ /*全删了*/ m ...
- 转: 如何高效利用GitHub
注:写了很多使用哲学,有意思 from: http://www.yangzhiping.com/tech/github.html
- ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox
AR.Form 文档 1:对象或属性: 名称 类型 说明 data 属性 编辑页根据主键请求回来的数据 method 属性 用于获取数据的函数指向,默认值Get objName 属性 用于拦截form ...
- MyBatis1:MyBatis入门
MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...
- 新手如何在gdb中存活
网络上已经有很多gdb调试的文章了,为什么我还要写这篇文章呢,因为本文是写给gdb新手的,目的就是通过一个简单的例子来让新手很快上手.一旦上手入门了,其他的问题就可以自己去搜索搞定了.右边是gdb的L ...