关于Linux安装OpenLDAP说明
版本centos
1. 简介
首先LDAP是一种通讯协议,LDAP支持TCP/IP。协议就是标准,并且是抽象的。在这套标准下,AD(Active Directory)是微软出的一套实现。
那AD是什么呢?暂且把它理解成是个数据库。也有很多人直接把LDAP说成数据库(可以把LDAP理解成存储数据的数据库)。像是其他数据库一样,LDAP也是有client端和server端。server端是用来存放资源,client端用来操作增删改查等操作。而我们通常说的LDAP是指运行这个数据库的服务器。可以简单理解AD =LDAP服务器+LDAP应用。
1.1 那LDAP这种数据库有什么特殊的呢?
我们知道,像MySQL数据库,数据都是按记录一条条记录存在表中。而LDAP数据库,是树结构的,数据存储在叶子节点上。看看下面的比喻:
假设你要树上的一个苹果(一条记录),你怎么告诉园丁它的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后是从树根到那个苹果所经过的所有“分叉”(ou),最后就是这个苹果的名字(uid,相当于MySQL表主键id)。好了!这时我们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接爬上去吧!
就这样就可以描述清楚“树结构”上的一条记录了。
说一下LDAP里如何定义一个记录的位置吧。
树(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
苹果(cn=redApple)
好了,redApple的位置出来了:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=ljheee
其中dn标识一条记录,描述了一条数据的详细路径
咦!有人疑问,为什么ou会有多个值?你想想,从树根到达苹果的位置,可能要经过好几个树杈,所有ou可能有多个值。关于dn后面一长串,分别是cn,ou,dc;中间用逗号隔开
总结一下LDAP树形数据库如下:
- dn :一条记录的详细位置
- dc :一条记录所属区域 (哪一颗树)
- ou :一条记录所属组织 (哪一个分支)
- cn/uid:一条记录的名字/ID (哪一个苹果名字)
LDAP目录树的最顶部就是根,也就是所谓的“基准DN"
1.2 为什么要用LDAP目录树来存储数据,用MySQL不行吗,为什么非要搞出一个树形的数据库呢?
这是因为用树形结构存储数据,查询效率更高(具体为什么,可以看一下关系型数据库索引的实现原理——B树/B+树),在某些特定的场景下,使用树形数据库更理想。比如:需要储存大量的数据,而且数据不是经常更改,需要很快速的查找,把它与传统的关系型数据库相比,LDAP除了快速查找的特点,它还有很多的运用场景,比如域验证等
2. 安装ldap
2.1 安装ladp
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
2.2 查看版本
slapd -VV
2.3 配置管理员密码
2.3.1 生成密码
slappasswd -s 123456
2.3.2 修改olcDatabase={2}hdb.ldif文件
vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif修改内容
olcSuffix: dc=testldap,dc=com
olcRootDN: cn=Manager,dc=testldap,dc=com
olcRootPW: {SSHA}84X/7jQ8TwrBd1Sq3k+PkIe1wHhy8mzZ
2.3.3 修改olcDatabase={1}monitor.ldif文件
vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif修改内容
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=testldap,dc=com" read by * none
2.3.4 验证配置文件是否正确
slaptest -u
注:slaptest -u 会提示 checksum error,不用担心,因为以上步骤已变更这两个文档,只需关注“config file testing succeeded”即可
2.3.5 启动服务&&查看服务
systemctl enable slapd
systemctl start slapd
systemctl status slapd
2.4 配置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
ll /var/lib/ldap/
注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。
2.4.1 导入基本Schema
**方法一:**
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
方法二:
ls /etc/openldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}
2.4.2 修改migrate_common.ph文件
vi /usr/share/migrationtools/migrate_common.ph
vi /usr/share/migrationtools/migrate_common.ph
修改$DEFAULT_MAIL_DOMAIN = "testldap.com";
$DEFAULT_BASE = "dc=testldap,dc=com";
$EXTENDED_SCHEMA = 1;
2.5 添加用户及用户组
(较为繁琐,是否可使用客户端ApacheDirectoryStudio取代)
默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。管理用户就是前面我们刚刚配置的root。
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:
2.5.1 添加用户组
groupadd ldapgroup1
groupadd ldapgroup2
2.5.2 添加用户并设置密码
useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
passwd ldapuser1
passwd ldapuser2
密码不少于 8 个字符
2.5.3 提取用户和组
grep ":10[0-9][0-9]" /etc/passwd > /root/users
grep ":10[0-9][0-9]" /etc/group > /root/groupscat users
cat groups
2.5.4 生成用户和组的ldif文件
/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
cat /root/users.ldif
cat /root/groups.ldif
2.5.5 导入用户及用户组到OpenLDAP数据库
配置openldap基础的数据库
cat > /root/base.ldif << EOF
dn: dc=testldap,dc=com
o: testldap com
dc: testldap
objectClass: top
objectClass: dcObject
objectclass: organizationdn: cn=Manager,dc=testldap,dc=com
cn: Manager
objectClass: organizationalRole
description: Directory Managerdn: ou=People,dc=testldap,dc=com
ou: People
objectClass: top
objectClass: organizationalUnitdn: ou=Group,dc=testldap,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
EOF
导入基础数据库
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/base.ldif
导入用户
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/users.ldif
导入用户组
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/groups.ldif
2.5.6 把OpenLDAP用户加入到用户组
尽管我们已经把用户和用户组信息,导入到OpenLDAP数据库中了。但实际上目前OpenLDAP用户和用户组之间是没有任何关联的。
如果我们要把OpenLDAP数据库中的用户和用户组关联起来的话,我们还需要做另外单独的配置。
现在我们要把ldapuser1用户加入到ldapgroup1用户组,需要新建添加用户到用户组的ldif文件,如下:
cat > add_user1_to_groups1.ldif << "EOF"
dn: cn=ldapgroup1,ou=Group,dc=testldap,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
EOF
导入ldif:
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/add_user1_to_groups1.ldif
ldapadd -x -w "root" -D "cn=Manager,dc=testldap,dc=com" -f /root/add_user2_to_groups2.ldif
2.6 开启OpenLDAP日志访问功能
在slapd.conf中加一行:(路径:/etc/openldap/ldap.conf,应该不是这个因为文件名不一样,由于使用默认日志级别设置,所以本人没配)
loglevel 4095 //后面会讲到这里为什么是4095
如果未定义olcLogLevel/loglevel属性/指令,则日志默认为256(仅统计信息)
在/etc/syslog.conf 中加入ldap日志文档:
(自定义输出路径,本人路径:/home/fxd/ldap/log/ldap.log)local4.* /var/log/ldap.log
重启syslog及LDAP服务
systemctl restart slapd
在/var/log/下就可以看到一个ldap.log文件
(自定义输出路径,本人路径:/home/fxd/ldap/log/ldap.log)
官方:https://www.zytrax.com/books/ldap/ch6/#loglevel
关于Linux安装OpenLDAP说明相关推荐
- gtb格式磁盘没法安装Linux吗,CentOS Linux安装OpenLDAP服务器
LDAP服务器用于统一认证账户信息,有点类似通讯录,实现集中管理用户账户的功能.系统为CentOS6.4. 安装openldap和Berkeley DB, openldap使用Berkeley DB存 ...
- linux 卸载 openldap,Linux下安装openldap
Ubuntu apt-get install安装参考:http://dongwang.wordpress.com/category/uncategorized/ 普通linux安装,以XXX用户身份安 ...
- Linux 安装并配置 OpenLDAP 新编(1)快速入门指南
Linux 安装并配置 OpenLDAP 新编(1)快速入门指南 快速入门,仅用于学习和本地开发,不要直接在生产环境中实施! 获取软件 官方的快速入门指南中,2.4-2.6的三个版本都只讲解了源代码编 ...
- 《Linux/UNIX OpenLDAP实战指南》——2.3 Linux平台安装
本节书摘来自异步社区<Linux/UNIX OpenLDAP实战指南>一书中的第2章,第2.3节,作者:郭大勇著,更多章节内容可以访问云栖社区"异步社区"公众号查看 2 ...
- linux下openldap版本查询,Linux下安装openldap
Ubuntu apt-get install安装参考:http://dongwang.wordpress.com/category/uncategorized/ 普通linux安装,以XXX用户身份安 ...
- openldap linux客户端,OpenLDAP 客户端安装部署
六.OpenLDAP客户端验证 1.配置/etc/openldap/ldap.conf 默认客户端不允许查询OpenLDAP条目信息,如果需要让客户端查询条目,需要添加OpenLDAP服务端的URI以 ...
- 安装OpenLDAP
2.6.安装OpenLDAP 2.6.1.系统环境信息 [root@hadoop1 ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 ...
- CDH集群安装OpenLDAP服务并集成sssd客户端
操作环境 操作系统:Red Hat Enterprise Linux Server release 7.4 集群环境:CDH5.16.2 1 OpenLDAP的安装与配置 配置LDAP服务器 1. ...
- 手把手教你 centos7 安装 OpenLDAP 2.4.44 实战
网上例子千千万万,100个里99个都是坑 系统版本:centos7 软件版本:2.4.44 超级重要,版本不对基本都会错,注意 一 Yum 配置 wget http://mirrors.aliyun ...
最新文章
- mybatis mapper.xml dtd_全栈开发踩坑之路4-用MyBatis实现服务
- 压力测试后,BCH采用增加
- SQLServer 常见高CPU利用率原因
- Linux与Windows数据传输
- Excel告诉你身份证号码里藏着de秘密
- matlab inpainting,MATLAB-Python-inpainting-codes-master
- 程序员犯的非技术错误(Top 5)
- (十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...
- Java操作word文件的工具选择
- Uber 提出损失变化分配方法 LCA,揭秘神经网络“黑盒” 60s测试:你是否适合转型人工智能? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw
- 对Spark2.2.0文档的学习1-Cluster Mode Overview
- Java函数式编程详解
- 计算机硬件系统基本组成
- 微信小程序实现表情包编辑
- 实现在GEF中被选中图形上的右键菜单
- 元数据“人行横道”MC
- nginx配置路径、跨域、本机自定义server_name
- 【探索】excel VBA的任意坐标画线问题
- 【深度学习】如何封装可维护的restiful api
- L2-040 哲哲打游戏(Python3)