LUNIX LDAP的配置信息

2023-11-30 10:58
文章标签 配置 信息 ldap lunix

本文主要是介绍LUNIX LDAP的配置信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    • LDAP
    • LDAP常用关键字列表
    • LDAP支持的目录操作
    • Berkeley DB安装
    • OpenLDAP安装步骤
    • OpenLDAP配置步骤
    • 启动OpenLDAP服务器
    • 检查slapd进程是否已经正常启动
    • 数据导入


LDAP

LDAP(Lightweight Directory Access Protocol)代表轻型目录访问协议,是用来访问目录服务(如基于X.500的目录服务)的轻型协议,它运行在TCP/IP或其他面向连接的传输服务之上。LDAP目录基于客户/服务器方式实现。
LDAP的信息模型是建立在“条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的“可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如“cn”是通用名称(common name) ,或者“mail”是电子邮件地址。条目的值的语法取决于属性类型。比如,cn属性可能具有一个值“Babs Jensen” 。一个mail属性可能包含“babs@example.com” 。一个jpegphoto属性可能包含一幅JPEG(二进制)格式的图片。 各个元素之间的关系如图一所示
这里写图片描述

LDAP常用关键字列表

LDAP通过属性objectClass来控制哪一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式规则。


dc
Domain Component
域名的部分,其格式是将完整的域名分成几部分,如域名为example.com变成dc=example,dc=com


uid
User Id
用户ID,如“tom”


ou
Organization Unit
组织单位,类似于Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“market”


cn
Common Name
公共名称,如“Thomas Johansson”


sn
Surname
姓,如“Johansson”


dn
Distinguished Name
惟一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个惟一的名称,如“uid= tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是惟一的


rdn
Relative dn
相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn= Thomas Johansson”


c
Country
国家,如“CN”或“US”等。


o
Organization
组织名,如“Example, Inc.”

LDAP支持的目录操作

包括:查询目录、更新目录、增加条目、删除条目、改变条目名称,搜索信息,最常用的LDAP操作是搜索信息操作。LDAP搜索操作允许搜索目录的一部分,查找匹配某个搜索过滤器规则的条目,搜索在 dc=example,dc=com 条目之中或者之下的整个目录子树,查找一个名字叫做 Barbara Jensen 的个人,并且获取每一个找到的条目的电子邮件地址

Berkeley DB安装

  • Berkeley DB安装
    因为OpenLDAP将数据存放在数据库中,因此安装部署OpenLDAP之前首先要安装Berkeley DB。该数据库可以在Oracle的官方网站上下载到,
    下载地址为:http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
    安装数据库步骤:
    1) # tar zxvf db-5.2.36.tar.gz 或者 # unzip db-5.2.36.NC.zip
    2) # cd db-5.2.36/build_unix
    3) # ../dist/configure //默认安装在/usr/local目录下可以通过../dist/configure –prefix=你的路径
    4) # make //开始安装
    5) # make install
  • Berkeley DB配置
    安装OpenLDAP过程中,在./configure时,遇到错误checking if Berkeley DB version supported by BDB/HDB backends… no configure: error: BerkeleyDB version incompatible with BDB/HDB backends,这是因为没有安装Berkeley DB或是安装了Berkeley DB,但是系统找不到他的头文件和lib的库,这时需要添加一些环境变量,步骤如下:
    1) # export CPPFLAGS=”-I/usr/local/BerkeleyDB.5.2/include”
    2) # export LDFLAGS=”-L/usr/local/lib -L/usr/local/BerkeleyDB.5.2/lib -R/usr/local/BerkeleyDB.5.2/lib”
    3) # export LD_LIBRARY_PATH=”/usr/local/BerkeleyDB.5.2/lib”
    4) # env LDFLAGS=-L/usr/local/lib -L/usr/local/BerkeleyDB.5.2/lib -R/usr/local/BerkeleyDB.5.2/lib
    HOSTNAME=mylinux
    TERM=vt100
    SHELL=/bin/bash
    HISTSIZE=1000
    CPPFLAGS=-I/usr/local/BerkeleyDB.4.8/include
    SSH_CLIENT=::ffff:192.168.0.10 3336 22
    OLDPWD=/apps/openldap
    SSH_TTY=/dev/pts/2
    USER=root
    LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.8/lib

OpenLDAP安装步骤

安装之前首先要下载OpenLDAP,下载地址http://www.openldap.org/software/download/
1) [root@localhost tmp]# tar zxvf openldap-stable-20120311.tgz
2) [root@localhost tmp]# cd openldap-2.4.30
3) [root@localhost openldap-2.4.30]# ./configure –prefix=/usr/local/openldap –enable-bdb
注:–prefix用于更改安装目录,默认安装在/usr/local下
Making servers/slapd/backends.c
Add config …
Add ldif …
Add monitor …
Add bdb …
Add hdb …
Add relay …
Making servers/slapd/overlays/statover.c
Add seqmod …
Add syncprov …
Please run “make depend” to build dependencies

看到这些信息时,说明已经configure完毕。
4) [root@localhost openldap-2.4.30]# make depend
Making depend in /apps/openldap/openldap-2.4.30
Entering subdirectory include
make[1]: Entering directory /apps/openldap/openldap-2.4.30/include’
Making ldap_config.h
make[1]: Leaving directory
/apps/openldap/openldap-2.4.30/include’
….
Entering subdirectory man5
make[3]: Entering directory /apps/openldap/openldap-2.4.30/doc/man/man5′
make[3]: Nothing to be done for
depend’.
make[3]: Leaving directory /apps/openldap/openldap-2.4.30/doc/man/man5′
Entering subdirectory man8
make[3]: Entering directory
/apps/openldap/openldap-2.4.30/doc/man/man8′
make[3]: Nothing to be done for depend’.
make[3]: Leaving directory
/apps/openldap/openldap-2.4.30/doc/man/man8′
make[2]: Leaving directory /apps/openldap/openldap-2.4.30/doc/man’
make[1]: Leaving directory
/apps/openldap/openldap-2.4.30/doc’
5) [root@localhost openldap-2.4.30]# make
……………………….
done
make[3]: Leaving directory /apps/openldap/openldap-2.4.30/doc/man/man8′
make[2]: Leaving directory
/apps/openldap/openldap-2.4.30/doc/man’
make[1]: Leaving directory `/apps/openldap/openldap-2.4.30/doc’
注:make depend比较快,但是,make可能要花点时间
6) [root@localhost openldap-2.4.30]# make test
该操作查看是否build成功,(整个过程会花上几分钟),如果成功,会显示如下信息:

Test succeeded
./scripts/test000-rootdse completed OK.

Starting test001-slapadd …
running defines.sh
7) [root@localhost openldap-2.4.30]# make install
注:运行make install开始安装,建议以源码安装的软件都放到独立的目录下,不要放在默认的路径下,要不然卸载的时候会很麻烦。安装到一个目录下,只要删除目录就可以卸载了。

OpenLDAP配置步骤

OpenLDAP主配置文件slapd.conf,该配置文件一般保存在安装目录下的etc/openldap/目录下。它的初始内容如下
[root@localhost openldap]# cat slapd.conf

See slapd.conf(5) for details on configuration options.
This file should NOT be world readable.

include /usr/local/etc/openldap/schema/core.schema

Define global ACLs to disable default read access.

Do not enable referrals until AFTER you have a working directory
service AND an understanding of referrals.
referral ldap://root.openldap.org

pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args

Load dynamic backend modules:
modulepath /usr/local/libexec/openldap
moduleload back_bdb.la
moduleload back_hdb.la
moduleload back_ldap.la

Sample security restrictions
Require integrity protection (prevent hijacking)
Require 112-bit (3DES or better) encryption for updates
Require 63-bit encryption for simple bind
security ssf=1 update_ssf=112 simple_bind=64

Sample access control policy:
Root DSE: allow anyone to read it
Subschema (sub)entry DSE: allow anyone to read it
Other DSEs:
Allow self write access
Allow authenticated users read access
Allow anonymous users to authenticate
Directives needed to implement policy:
access to dn.base=”” by * read
access to dn.base=”cn=Subschema” by * read access to *
by self write
by users read
by anonymous auth

if no access controls are present, the default policy
allows anyone and everyone to read anything but restricts
updates to rootdn. (e.g., “access to * by * read”)

rootdn can always read and write EVERYTHING!

#

BDB database definitions

#

database bdb
suffix “dc=my-domain,dc=com”
rootdn “cn=Manager,dc=my-domain,dc=com” Cleartext passwords, especially for the rootdn, should
be avoid. See slappasswd(8) and slapd.conf(5) for details.
Use of strong authentication encouraged.
rootpw secret
The database directory MUST exist prior to running slapd AND
should only be accessible by the slapd and slap tools.
Mode 700 recommended.
directory /usr/local/var/openldap-data
Indices to maintain
index objectClass eq
1) 设置LDAP使用的Schema
[root@localhost openldap]# vi slapd.conf
找到语句:
include /usr/local/etc/openldap/schema/core.schema
在该语句的后面添加以下语句:
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
2) 设置目录树的后缀
找到语句:
suffix “dc=my-domain,dc=com”
将其改为:
suffix “dc=example,dc=com”
3) 设置LDAP管理员的DN
找到语句:
rootdn “cn=Manager,dc=my-domain,dc=com”
将其改为:
rootdn “cn=root,dc=example,dc=com”
4) 设置LDAP管理员的口令
找到语句:
rootpw secret
将其改为:
rootpw 123456
注:修改密码的时候需要注意rootpw前面不能有空格,以及rootpw与密码之间用TAB键隔开。
5) #设置数据库的存放路径
Indices to maintain
index objectClass eq
注:2,3,4部分可以根据需要进行修改!!!

启动OpenLDAP服务器

启动OpenLDAP服务需要执行以下命令:
/usr/local/libexec/slapd
注:如果没有出错信息,直接返回shell,就说明服务器正常启动了。如果启动不成功,他会提示一些出错信息,多数是slapd.conf配置出错引起的。

检查slapd进程是否已经正常启动

执行命令:# pstree|grep “slapd”
如果出现 |-slapd—{slapd} 则说明slapd进程已经成功启动
测试访问目录的能力:
[root@localhost openldap]# ldapsearch -x -b ” -s base ‘(objectclass=*)’ namingContexts
如果正确配置了服务器,应该看到类似于下面的输出(当然,有不同的 dc):

数据导入

数据导入的方式主要有四种:1. 手工输入;2. .ldif文件格式录入;3. 脚本自动录入;4. 客户端工具录入。
(1) 手工输入
1) 创建DN
[root@localhost ~]# ldapadd -x -D’cn=root,dc=topsec,dc=com’ -W
Enter LDAP Password:
dn:dc=topsec,dc=com
objectclass:top
objectclass:domain
dc:topsec
o:Topsec,Inc 此处回车后按Ctrl+D将数据发送给服务器,并隐式取消与服务器的绑定
adding new entry “dc=topsec,dc=com”
2) 创建OU
[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W
Enter LDAP Password:
dn:ou=headerquarters,dc=topsec,dc=com
ou:headerquarters
objectclass:organizationalUnit 此处表明ou是必需的属性
adding new entry “ou=headerquarters,dc=topsec,dc=com”
3) 建立RDN
[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W
Enter LDAP Password:
dn:cn=Ava Green,ou=test,dc=topsec,dc=com
cn:Ava
sn:Green
objectclass:inetOrgPerson
adding new entry “cn=Ava Green,ou=test,dc=topsec,dc=com”
ldap_add: No such object (32)
matched DN: dc=topsec,dc=com
注:出现此错误的原因是它的父节点还没有创建,需要先创建节点ou=test,dc=topsec,dc=com。
创建过程如下:
[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W
Enter LDAP Password:
dn:ou=test,dc=topsec,dc=com
ou:test
objectclass:organizationalUnit
adding new entry “ou=test,dc=topsec,dc=com”
接下来继续上述过程:
[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W
Enter LDAP Password:
dn:cn=Ava Green,ou=test,dc=topsec,dc=com
cn:Ava
sn:Green
objectclass:inetOrgPerson
adding new entry “cn=Ava Green,ou=test,dc=topsec,dc=com”
成功~(≧▽≦)/~啦啦啦!!!!
注:上面概述的过程使用三个基本的 LDAP 操作:绑定操作、更新操作和隐式取消绑定操作。
(2) 文件输入
将数据插入 LDAP 目录的第二种方法是使用 LDIF 文件。LDIF 文件只是包含想要插入的以特定语法编排的数据的纯文本文档。上面我们已经熟悉了语法:dn: 后跟树中存储项的位置,然后跟一个或多个 RDN 项(包含数据的类型/值对),后跟必需的对象类。要创建 LDIF,使用纯文本编辑器,然后输入想要添加到目录中的数据。
以下是示例文件example.ldif文件的内容:
dn:dc=topsec,dc=com
objectclass:top
objectclass:domain
dc:topsec
o:Topsec,Inc

dn:ou=managers,dc=topsec,dc=com
ou:managers
objectclass:organizationalUnit

dn:cn=Kevin,ou=managers,dc=topsec,dc=com
cn:Kevin
sn:Black
objectclass:person

dn:ou=employees,dc=topsec,dc=com
ou:employees
objectclass:organizationalUnit

dn:cn=Mary,ou=employees,dc=topsec,dc=com
cn:Mary
sn:Brown
objectclass:person
[root@localhost ~]# ldapadd -x -D ‘cn=root,dc=topsec,dc=com’ -W -f example.ldif
Enter LDAP Password:
adding new entry “ou=managers,dc=topsec,dc=com”

adding new entry “cn=Kevin,ou=managers,dc=topsec,dc=com”

adding new entry “ou=employees,dc=topsec,dc=com”

adding new entry “cn=Mary,ou=employees,dc=topsec,dc=com”
此方法的优点:
1) 在将文件导入数据库之前,可以检查拼写和语法;
2) 可以创建带有许多项的 LDIF 文件,然后用一个操作将它们添加到目录中;
3) 如果导入失败,只要打开 LDIF 文件,查找错误,并尝试重新导入即可;
4) LDIF 文件是一种开放标准,几乎可以将它们导入到任何目录服务器中。
此方法的缺点:
1) 该过程仍需要较大的工作量——必须输入LDIF 中的所有项,并遵循正确的语法;
2) 当 LDAP 服务器遇到导入文件中的错误时,它并不总是能方便地处理。虽然您可能会得到一条“syntax error(语法错误)”消息,但它不会给出,在一个相当大的 LDIF 文件中,错误在哪里。
(3) 脚本自动录入
可以使用通常用 Perl 或 PHP 编写的脚本,它们的目的是接收数据并将它“自动”放到 LDAP 目录中。
这种方法存在的问题。首先,也是最重要的,我亲自尝试过的任何脚本都有许多可恶的错误,在某些最坏的情形下,会在导入期间毁坏您的数据或者破坏目录树本身。其次,使用脚本导入数据假设数据已经以某种形式存在。当分别从 /etc/passwd 和 /etc/groups 导入用户密码和组信息时,这当然很好,但您的联系人信息可能不是通常可识别的格式。毕竟,本教程的主要目的是使联系人信息不受专用格式的支配。
如果将联系信息数据导出成纯文本、用逗号分隔的文件,并找到能够将数据导入 LDAP 目录的脚本,会怎么样呢?如果可以找到这种脚本,并且如果它运行得如它所宣称的那样,则您会得到所有的功能。请记住,电子邮件客户机对“用逗号分隔的文件”有其自己精确的解释。要在每行结束的地方添加回车吗?导出程序如何处理嵌入字段中的空格?某些人通常窃用 LDAP 导入脚本来将他们的数据从应用程序 A(已经以格式 X 导出)传送到 LDAP 目录。如果他们的应用程序和导出格式与您的相合,则尝试它。不过要确保先备份您的目录数据库,这样,如果导入失败,就可以返回到“已知的好”状态。
(4) 客户端工具录入
ldap客户端的工具很多,linux平台有一个基于php编写的phpldapadmin、windows平台也有一个比较好的工具ldapadmin。下图是LDAP数据库管理工具——ADS(Apache Directory Studio)
它的下载地址是http://directory.apache.org/studio/downloads.html。

这篇关于LUNIX LDAP的配置信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436758

相关文章

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

mybatis映射器配置小结

《mybatis映射器配置小结》本文详解MyBatis映射器配置,重点讲解字段映射的三种解决方案(别名、自动驼峰映射、resultMap),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定... 目录select中字段的映射问题使用SQL语句中的别名功能使用mapUnderscoreToCame

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp