相关文章推荐
瘦瘦的青蛙  ·  在使用Dask ...·  1 年前    · 
踏实的馒头  ·  在Node.js中将SVG图像转换为PNG, ...·  1 年前    · 
谦虚好学的长颈鹿  ·  java.io.IOException: ...·  2 年前    · 
八块腹肌的大熊猫  ·  2022年了,将深度学习模型部署到手机上有什 ...·  2 年前    · 
深情的烈酒  ·  postgresql图片等二进制数据的存储( ...·  2 年前    · 
Code  ›  LDAP安装步骤开发者社区
schema openldap
https://cloud.tencent.com/developer/article/2197159
近视的镜子
1 年前
菲宇
0 篇文章

LDAP安装步骤

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
菲宇
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 菲宇 > LDAP安装步骤

LDAP安装步骤

作者头像
菲宇
发布 于 2022-12-21 18:20:20
1.8K 0
发布 于 2022-12-21 18:20:20
举报

简介

OpenLDAP 是一款轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。

LDAP 具有两个国家标准,分别是X.500 和LDAP。OpenLDAP 是基于X.500 标准的,而且去除了X.500 复杂的功能并且可以根据自我需求定制额外扩展功能,但与X.500 也有不同之处,例如OpenLDAP 支持TCP/IP 协议等,目前TCP/IP 是Internet 上访问互联网的协议。

OpenLDAP 则直接运行在更简单和更通用的TCP/IP 或其他可靠的传输协议层上,避免了在OSI会话层和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。LDAP 提供并实现目录服务的信息服务,目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果。目录服务一般用来包含基于属性的描述性信息并支持精细复杂的过滤功能,但OpenLDAP 目录服务不支持通用数据库的大量更新操作所需要的复杂的事务管理或回滚策略等。

OpenLDAP 默认以Berkeley DB 作为后端数据库,Berkeley DB 数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。Berkeley DB 是一类特殊的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。Berkeley DB 数据库是面向查询进行优化,面向读取进行优化的数据库。Berkeley DB 不支持事务型数据库(MySQL、MariDB、Oracle 等)所支持的高并发的吞吐量以及复杂的事务操作。

OpenLDAP 目录中的信息是按照树形结构进行组织的,具体信息存储在条目(entry)中,条目可以看成关系数据库中的表记录,条目是具有区别名(Distinguished Name,DN)的属性(attribute),DN 是用来引用条目,DN 相当于关系数据库(Oracle/MySQL)中的主键(primary key),是唯一的。属性由类型(type)和一个或者多个值(value)组成,相当于关系数据库中字段的概念。

大数据平台,LDAP和kerberos的统一账户管理和认证是必不可少的。通过Openldap来搭建LDAP服务器。

1. 安装openldap软件包

yum install openldap openldap-* -y

2. 初始化配置文件,不要手动去创建slapd.conf,可能会由于格式问题导致问题

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

3. 初始化数据库配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

4. 修改权限

chown -R ldap.ldap /etc/openldap

chown -R ldap.ldap /var/lib/ldap

5. slapd.conf配置文件如下

# egrep -v "#|^$" /etc/openldap/slapd.conf

include         /etc/openldap/schema/corba.schema

include         /etc/openldap/schema/core.schema

include         /etc/openldap/schema/cosine.schema

include         /etc/openldap/schema/duaconf.schema

include         /etc/openldap/schema/dyngroup.schema

include         /etc/openldap/schema/inetorgperson.schema

include         /etc/openldap/schema/java.schema

include         /etc/openldap/schema/misc.schema

include         /etc/openldap/schema/nis.schema

include         /etc/openldap/schema/openldap.schema

include         /etc/openldap/schema/ppolicy.schema

include         /etc/openldap/schema/collective.schema

include         /etc/openldap/schema/kerberos.schema <<<<<<<由于后面需要配合kerberos认证,这里增加kerberos.schema,参考第6步骤

allow bind_v2

pidfile         /var/run/openldap/slapd.pid

argsfile        /var/run/openldap/slapd.args

loglevel        4095

TLSCACertificatePath /etc/openldap/certs

TLSCertificateFile "\"OpenLDAP Server\""

TLSCertificateKeyFile /etc/openldap/certs/password

access to *

by self write

by users read

by anonymous read

database config

access to *

by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage

by * none

database monitor

access to *

by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

by dn.exact="cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" read

by * none

database bdb

suffix          "dc=testserver,dc=com"

checkpoint 1024 15

cachesize       10000

rootdn          "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"

rootpw          {SSHA}LPbWMTEOprpTvqjmxy/mTW+i0IPrugJc    <<<<<<<<<<<<<<<参考第7步骤,生成加密密码

directory       /var/lib/ldap

index objectClass                       eq,pres

index ou,cn,mail,surname,givenname      eq,pres,sub

index uidNumber,gidNumber,loginShell    eq,pres

index uid,memberUid                     eq,pres,sub

index nisMapName,nisMapEntry            eq,pres,sub

6. 安装kerberos软件

yum install krb5* -y

查找kerberos.schema文件,并拷贝到/etc/openldap/schema/kerberos.schema

# cd /usr/share/doc/krb5-server-ldap-1.10.3/

# ls

60kerberos.ldif  kerberos.ldif  kerberos.schema

7. 生成LDAP的root管理密码

slappasswd -s 123456

{SSHA}L4uH7lVxwdS0/L/vspdseXORcneIWfeb

8. 检查配置文件是否有格式错误

# slaptest -f /etc/openldap/slapd.conf

config file testing succeeded

9. 准备生成LDAP数据库结构

先删除slapd.d的原有结构

rm -rf /etc/openldap/slapd.d/*

生成新的数据结构

slaptest -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d

修改权限,这个很重要,不然后面会报错

chown -R ldap:ldap /etc/openldap/slapd.d

每次修改都需要重启ldap

service slapd restart

10. 测试LDAP的连接,这里足足让我纠结两周,无数次的安装,有的时候可以正常登陆,有的时候会报错,明确说认证错误(密码错误)。这个一直让我以为是密码部分的格式设置有问题。各种尝试都无法正常解决掉。最后突然发现,是rootdn的问题,而不是rootpw的问题。

# ldapsearch -x -D "cn=admin,dc=testserver,dc=com" -h 10.24.103.17 -W -b 'ou=People,dc=testserver,dc=com'

Enter LDAP Password:

ldap_bind: Invalid credentials (49)

就是说,下面的命令中, 要完整的复制sldap.conf中的“rootdn "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"”条目信息,不能多,不能少。

这样才能正常查询结果

ldapsearch -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -h 10.24.103.17 -W

11. LDAP创建成功之后,需要创建数据。由于我是迁移数据过来,只是将生产的ldap数据导出导入。

ldap数据备份的方式有两种 :一种是通过ldapsearch ,一种是通过slapcat命令。很多人都是建议通过slapcat来完成,但是我测试一下,没有成功,就先使用ldapsearch导出,ldapadd导入的

/usr/sbin/slapcat > /tmp/liang/ldapdbak.ldif

/usr/sbin/slapadd -l  /tmp/liang/ldapdbak.ldif

12. 导入数据命令

ldapadd -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -h 10.24.103.17 -W -f ldapexport.ldif

13. 查询数据,确认已经导入成功即可

ldapsearch -LLL -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -W -b "dc=testserver,dc=com" '(uid=*)'

15. 在客户端安装ldap软件,我比较偷懒,全都安装了,实际只安装openldap-clients就可以了

yum install openldap openldap-* -y

16. 设置LDAP客户端,客户端设置有几种方式

---1. 通过图形化命令完成LDAP client设置

LANG=C authconfig-tui

05d32feb59999f4a1aafbad5dcde5919.png
05d32feb59999f4a1aafbad5dcde5919.png
841e76ae51eb378ee3f389f712d7bc08.png
841e76ae51eb378ee3f389f712d7bc08.png

---2. 通过authconfig命令,配置客户端。由于是大数据平台运维,所以我是通过命令行实现的,这样比较方便批量处理。

authconfig --enablemkhomedir \

--disableldaptls \

--enablemd5 \

--enableldap \

--enableldapauth \

--ldapserver=ldap://10.24.103.17 \

--ldapbasedn="dc=testserver,dc=com" \

--enableshadow \

--update

17. 然后在client上,root用户su - username,可以发现,已经配置成功了。

附:常用命令

1. 查找用户     ldapsearch -x -LLL -b dc=cscw 'uid=Jane' cn mail     输出结果类似于:     dn: uid=Jane,ou=Users,dc=cscw       cn: Jane       mail: jenyzhang@163.com   开关的解释:     -x: “simple” binding; will not use the default SASL method     -LLL: disable printing extraneous information     uid=Jane a “filter” to find the john user     cn mail : requests certain attributes to be displayed (the default is to show all attributes) 2.添加新用户     ldapadd -x -D "cn=admin,dc=edx,dc=com" -W -f test_user.ldif   -D 后面的“cn=admin,dc=edx,dc=com”是服务器的dn,根据情况改为你的dn test_user.ldif的内容如下:     dn: uid=testzhang,ou=Users,dc=edx,dc=com       objectClass: inetOrgPerson       objectClass: top       objectClass: eduPerson       uid: testzhang       sn: testzhang       givenName: testzhang       cn: testzhang       userPassword: 123456       eduPersonPrincipalName: lns14@mails.tsinghua.edu.cn       mail: lns14@mails.tsinghua.edu.cn   该命令运行的结果如下:(首先要求你输入admin的密码,然后会提示添加了新的节点,说明创建成功)     Enter LDAP Password:                                                                                                                      adding new entry "uid=testzhang,ou=Users,dc=edx,dc=com"      另外,也可以使用-w 参数直接在命令中加入密码:     ldapadd -x -D "cn=admin,dc=edx,dc=com" -w password -f test_user.ldif   把上面的“password”换成前面输入的密码。 该命令运行的结果如下:(直接提示添加了新的节点) adding new entry "uid=testzhang,ou=Users,dc=edx,dc=com"

 
推荐文章
瘦瘦的青蛙  ·  在使用Dask pivot_table之后,我丢失了索引列-腾讯云开发者社区-腾讯云
1 年前
踏实的馒头  ·  在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式-51CTO.COM
1 年前
谦虚好学的长颈鹿  ·  java.io.IOException: Invalid header signature; read 0xE011BDBFEFBDBFEF, expected 0xE11AB1A1E011CFD0_s312303781的博客-CSDN博客
2 年前
八块腹肌的大熊猫  ·  2022年了,将深度学习模型部署到手机上有什么成熟的解决方案吗? - 知乎
2 年前
深情的烈酒  ·  postgresql图片等二进制数据的存储(copy命令,bytea类型)_postgres 存储图片_djskl的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号