菲洛嘉青春动能素135HA FILLMED® NCTF 135HA LED指示灯的常见故障分析 智微智能 Elkhartlake K075终端,零售产业新选择 天空蓝拓客管理系统详细介绍版 muso公链项目 天使计划 是什么?[秘] 独家揭秘最前沿的家装“黑科技”——掌赋 天博体育欧洲杯特辑,东道主法兰西的失意2016 亚马逊的送货侦察员 学习听起来像挡泥板 Google Comics Factory使ML变得容易 笑着说-男性或女性 Amazon Rekognition中更好的人脸检测 关于Spaun的真相-大脑模拟 两个聊天机器人彼此聊天-有趣又怪异 GANPaint:将AI用于艺术 WCF和WF给予社区 从耳朵到脸 所有神经网络的深层缺陷 蠕虫在尾巴上平衡杆子 Kickstarter上的OpenCV AI套件 TensorFlow-Google的开源AI和计算引擎 众包取代新闻工作者 Google的DeepMind学会玩街机游戏 哑机器人V智能机器人 .NET与.NET 5融为一体 Google的深度学习-语音识别 LInQer将.NET LINQ移植到Javascript 机器人TED演讲-新的图灵测试? GAN的发明者加入苹果 您的智能手机会监视您键入的内容 人工智能帮助改善国际象棋 Zalando Flair NLP库已更新 TensorFlow 1.5包含移动版本 AlphaGo输了一场比赛-比分3-1 虚拟机器学习峰会 Microsoft开源AI调试工具 SharePoint走向移动 F#4.0发出文化变革的信号 克里斯蒂拍卖AI艺术品 人工智能如何区分 Facebook在蒙特利尔的新AI实验室 Mozilla想要您的声音 微软使用极深的神经网络赢得ImageNet 建立AI合作伙伴关系 .NET Core 3-Microsoft几乎回到了起点 神经网络-更好的销售商? Google使用AI查找您的住所 虹膜-适用于Android的Siri证明苹果没有优势 TensorFlow 2提供更快的模型训练 深度学习研究人员将为Google工作
您的位置:首页 >物联网 >

OpenLDAP源码安装及配置管理

OpenLDAP源码安装

下载OpenLDAP源码

http://www.openldap.org/software/download/

ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release.tgz

编译源码
tar -zxvf openldap-2.4.48.tgz cd openldap-2.4.48/./configure

编译错误

configure: error: BDB/HDB: BerkeleyDB not available

本地没有安装BerkeleyDB数据库

安装BerkeleyDB

去Oracle官网下载:

http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html

BerkeleyDB版本:
根据openldap-2.4.48源码中README的描述,要求用Oracle Berkeley 4.4-4.8或者5.0-5.1版本的
在这里插入图片描述
所以选择下载db-5.1.29版本
解压到本地
在这里插入图片描述切换到build_unix 目录

cd build_unix../dist/configuremakemake install

设置系统变量
在这里插入图片描述

vim /etc/ld.so.conf

添加一行:/usr/local/BerkeleyDB.5.1/lib/
保存退出。

执行生效

ldconfig –v
编译OpenLDAP

进入OpenLDAP源码包

./configure CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include -D_GNU_SOURCE" LDFLAGS="-L/usr/local/BerkeleyDB.5.1/libmake dependmakemake testmake install

OpenLDAP目录结构

配置文件目录

在这里插入图片描述

服务端可执行指令目录

在这里插入图片描述

服务端启动工具slapd

在这里插入图片描述

客户端可执行指令目录

在这里插入图片描述

bdb数据、log存放目录

在这里插入图片描述

OpenLDAP配置管理

版本管理
/usr/local/libexec/slapd -VV

在这里插入图片描述

配置rootdn密码
slappasswd

在这里插入图片描述

主配置文件slapd.conf
cd /usr/local/etc/openldap/vim slapd.conf

在这里插入图片描述
schema默认只有core.schema,各级需要添加,这里将同配置文件一个目录的schema目录中有的schema文件都加到配置文件中
在这里插入图片描述

include /usr/local/etc/openldap/schema/collective.schemainclude /usr/local/etc/openldap/schema/corba.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/duaconf.schemainclude /usr/local/etc/openldap/schema/dyngroup.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schemainclude /usr/local/etc/openldap/schema/java.schemainclude /usr/local/etc/openldap/schema/misc.schemainclude /usr/local/etc/openldap/schema/nis.schemainclude /usr/local/etc/openldap/schema/openldap.schemainclude /usr/local/etc/openldap/schema/pmi.schemainclude /usr/local/etc/openldap/schema/ppolicy.schema

在这里插入图片描述

pidfile /usr/local/openldap-2.4.44/var/run/slapd.pidargsfile/usr/local/openldap-2.4.44/var/run/slapd.args

新增日志文件级别与路径,需要在编译时–enable-debug,否则日志文件输出,不影响调试模式

loglevel256logfile/usr/local/var/slapd.log

使用mdb做后端数据库,也可修改为"bdb"参数,在OpenLDAP 官方文档" 11.4. LMDB"章节中有介绍mdb是推荐使用的后端数据库

databasemdb

使用mdb做后端数据库时,根据官方文档中说明需要设置一个空间值," In addition to the usual parameters that a minimal configuration requires, the mdb backend requires a maximum size to be set. This should be the largest that the database is ever anticipated to grow (in bytes). The filesystem must also provide enough free space to accommodate this size.";如果使用bdb做后端数据库,需要将此项参数注释

maxsize1073741824

修改域名及管理员账户名。

suffix"dc=nmcm,dc=com"rootdn"cn=admin,dc=nmcm,dc=com"

使用密文密码,即使用slappasswd生成的密文

rootpw{SSHA}Q7CJ8dxnR6uuEyhZ3FHn6O2PaoJlsvlJ

#openldap数据目录,采用mdb时,在相应目录生成" data.mdb"与" lock.mdb"文件;采用bdb时,在相应目录生成" dn2id.bdb"与" id2entry.bdb",及多个" __db.00*"文件

directory/usr/local/var/openldap-data
index objectClass eq

初始化OpenLADP

如果采用mdb做后端数据库,此步可忽略,DB_CONFIG是 bdb/hdb数据库使用的;
与主配置文件中的配置有关,主配置文件确定使用bdb与数据存放路径。

cd /usr/local/var/openldap-data/cp DB_CONFIG.example DB_CONFIG

启动OpenLADP

#后台启动#非root用户不能监听端口1~1024,如果是非root用户,有可能需要重新定义服务端口/usr/local/libexec/slapd
#前端启动,输出debug信息/usr/local/libexec/slapd -d 256

OpenLDAP默认监听的端口是389

在这里插入图片描述

验证

ldapsearch -x -b "" -s base"(objectclass=*)"

在这里插入图片描述

ldapsearch -x -b "" -s base "(objectclass=*)" namingContexts

在这里插入图片描述

创建管理员账号

编辑ldif文件
vim admin.ldif
dn: dc=nmcm,dc=comobjectclass: dcObjectobjectclass: organizationo: NMCM.Incdc: nmcmdn: cn=admin,dc=nmcm,dc=comobjectclass: organizationalRolecn: admin
插入数据库
ldapadd -x -D "cn=admin,dc=nmcm,dc=com" -W -f admin.ldif

在这里插入图片描述

验证
ldapsearch -x -b "dc=nmcm,dc=com" "(objectClass=*)"

在这里插入图片描述

创建具有组属性的用户

编辑ldif文件
dn: ou=nsccwx,dc=nmcm,dc=comou: nsccwxobjectClass: organizationalUnitdn: cn=zhaojq,ou=nsccwx,dc=nmcm,dc=comou: nsccwxcn: nmcmsn: zhaojqobjectClass: inetOrgPersonobjectClass: organizationalPersondn: cn=jiangyt,ou=nsccwx,dc=nmcm,dc=comou: nsccwxcn: nmcmsn: jiangytobjectClass: inetOrgPersonobjectClass: organizationalPerson
插入数据库
ldapadd -x -D "cn=admin,dc=nmcm,dc=com" -W -f nsccwx.ldif

在这里插入图片描述

验证
ldapsearch -x -b "dc=nmcm,dc=com" "(objectClass=*)"

在这里插入图片描述

修改用户密码

ldappasswd -x -D "cn=zhaojq,ou=nsccwx,dc=nmcm,dc=com" -w 123456 "cn=zhaojq,ou=nsccwx,dc=nmcm,dc=com" -s 123456
验证

出现userPassword

ldapsearch -x -b "cn=zhaojq,ou=nsccwx,dc=nmcm,dc=com" "(objectClass=*)"

在这里插入图片描述

使用Java验证OpenLdap用户登录

import java.util.Hashtable;import javax.naming.Context;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;public class LdapDemo{public static void main(String[] args){System.out.println("IPAdress: " + args[0]);System.out.println("DN: " + args[1]);System.out.println("Password: " + args[2]);Hashtable<String, String> tbl = new Hashtable<String, String>(4);String LDAP_URL = "ldap://" +args[0]+ "/dc=nmcm,dc=com";tbl.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");tbl.put(Context.PROVIDER_URL, LDAP_URL);tbl.put(Context.SECURITY_AUTHENTICATION, "simple");tbl.put(Context.SECURITY_PRINCIPAL, args[1]);tbl.put(Context.SECURITY_CREDENTIALS, args[2]);System.out.println("env setting");DirContext context = null;try {System.out.println("login verification begins...");context = new InitialDirContext(tbl);System.out.println("login successfully.");} catch (Exception ex) {System.out.println("login failed.");} finally {try {if (context != null) {context.close();context = null;}tbl.clear();} catch (Exception e) {System.out.println("exception happened.");}}}}
java LdapDemo "localhost" "cn=zhaojq,ou=nsccwx,dc=nmcm,dc=com" "123456"

在这里插入图片描述

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。