当前位置: 首页 > news >正文

十年JAVA搬砖路——Linux搭建Ldap服务器。

1.安装命令

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

2.启动ldap

systemctl start slapd
systemctl enable slapd

3.修改密码

slappasswd
Aa123456

获得返回的密码加密密码串: {SSHA}DkSw0+43+u4PK7c7F1GtoubEWHnrz3bG

  1. 去slapd.d 目录 创建db.ldif 文件
cd /etc/openldap/slapd.d
vim db.ldif

文件内容:

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=ricman,dc=localhostdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=ricman,dc=localhostdn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}KUYZ4irDCPN8seoOg1zNNVzh70jVr1c8

#各个命令的说明
{
第一条语句修改了olcSuffix属性,该属性表示LDAP目录的后缀(基础DN)。它被替换为"dc=ricman,dc=localhost"。

第二条语句修改了olcRootDN属性,该属性表示LDAP目录的根用户(管理员)的区别名称(DN)。它被替换为"cn=Manager,dc=ricman,dc=localhost"。

第三条语句添加了一个新的属性olcRootPW,该属性表示根用户的密码。密码以哈希值形式提供({SSHA}KUYZ4irDCPN8seoOg1zNNVzh70jVr1c8)。

}

5.运行ldapmodify 命令替换系统文件

ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif

6.进入目录 cn=config 创建 monitor.ldif 文件

/etc/openldap/slapd.d/cn=config
vim monitor.ldif

文件内容

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=Manger,dc=ricman,dc=localhost" read by * none

7.运行 ldapmodify 使得monitor 文件生效

ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
  1. 创建ldap基础库 复制ldap原有配置,并赋予它所有权限
cp /usr/share/openldap-servers/DB_CONFIG.example
/var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*

然后向数据库添加schemas,包括cosine、nis、inetorgperson,然后分别执行下列命令

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f/etc/openldap/schema/inetorgperson.ldif

9.创建 base.ldif 文件

vim base.ldif 

文件内容:
dn: dc=ricman,dc=localhost
dc: ricman
objectClass: top
objectClass: domain

dn: cn=Manager ,dc=ricman,dc=localhost
objectClass: organizationalRole
cn: Manager
description: LDAP Manager

dn: ou=People,dc=ricman,dc=localhost
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=ricman,dc=localhost
objectClass: organizationalUnit
ou: Group

#语句说明
{
以下是上述语句的中文意思:

第一条语句创建了一个名为"dc=ricman,dc=localhost"的条目,表示一个域(domain)。该条目具有top和domain两个objectClass。

第二条语句创建了一个名为"cn=Manager,dc=ricman,dc=localhost"的条目,表示一个组织角色(organizationalRole)。该条目具有organizationalRole的objectClass,并且具有cn(名称)和description(描述)属性。

第三条语句创建了一个名为"ou=People,dc=ricman,dc=localhost"的条目,表示一个组织单位(organizationalUnit)。该条目具有organizationalUnit的objectClass,并且具有ou(组织单位名称)属性。

第四条语句创建了一个名为"ou=Group,dc=ricman,dc=localhost"的条目,表示一个组织单位(organizationalUnit)。该条目具有organizationalUnit的objectClass,并且具有ou(组织单位名称)属性。

LDIF语句的作用如下:

  1. dn: dc=ricman,dc=localhost
    dc: ricman
    objectClass: top
    objectClass: domain

    这条语句创建了一个域(domain)条目,其区别名称(DN)为"dc=ricman,dc=localhost"。该域具有属性"dc"设置为"ricman",并且具有"top"和"domain"两个对象类。

  2. dn: cn=Manager,dc=ricman,dc=localhost
    objectClass: organizationalRole
    cn: Manager
    description: LDAP Manager

    这条语句创建了一个组织角色(organizationalRole)条目,其区别名称为"cn=Manager,dc=ricman,dc=localhost"。该角色具有对象类"organizationalRole",并且具有属性"cn"设置为"Manager"和"description"设置为"LDAP Manager"。

  3. dn: ou=People,dc=ricman,dc=localhost
    objectClass: organizationalUnit
    ou: People

    这条语句创建了一个组织单位(organizationalUnit)条目,其区别名称为"ou=People,dc=ricman,dc=localhost"。该单位具有对象类"organizationalUnit",并且具有属性"ou"设置为"People"。

  4. dn: ou=Group,dc=ricman,dc=localhost
    objectClass: organizationalUnit
    ou: Group

    这条语句创建了另一个组织单位(organizationalUnit)条目,其区别名称为"ou=Group,dc=ricman,dc=localhost"。该单位具有对象类"organizationalUnit",并且具有属性"ou"设置为"Group"。

这些语句通常用于定义LDAP目录的结构和组织,包括域(domain)、管理角色、用户和组的组织单位。
}

  1. 运行 ldapadd 命令生效 base.ldif 文件
ldapadd -x -W -D "cn=Manager,dc=ricman,dc=localhost" -f base.ldif

需要输入密码,密码为一开始设置的Aa123456

11.Ldap Admin工具链接
依次点击start—connect—New connection,然后输入 Host,Base以及用户名与密码,如下图所示,然后test connection。

在这里插入图片描述

相关文章:

  • GaussDB SQL基础语法示例-数组表达式
  • 【Jenkins】新建任务FAQ
  • 软考高项-49个项目管理过程输入、输出和工具技术表
  • 使用treq库下载Python程序
  • 批量采集各类自媒体平台内容为word文档带图片软件【支持18家自媒体平台的爬取采集】
  • 用pd.DataFrame.to_sql方法插入万行数据耗时21秒
  • 【经典面试】87 字符串解码
  • yum 命令
  • CSP-S 2023 T1密码锁 T2消消乐
  • RISC-V IDE MRS无感远程协助模块详解
  • 【LeetCode:80. 删除有序数组中的重复项 II | 双指针】
  • Py之auto-gptq:auto-gptq的简介、安装、使用方法之详细攻略
  • SpringCloud中Turbine 1.X版本BUG
  • TensorFlow 的应用场景有哪些
  • Pycharm安装jupyter和d2l
  • @angular/forms 源码解析之双向绑定
  • [deviceone开发]-do_Webview的基本示例
  • 2019年如何成为全栈工程师?
  • FastReport在线报表设计器工作原理
  • happypack两次报错的问题
  • Linux中的硬链接与软链接
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring boot下thymeleaf全局静态变量配置
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 当SetTimeout遇到了字符串
  • 前端技术周刊 2019-01-14:客户端存储
  • Linux权限管理(week1_day5)--技术流ken
  • 湖北分布式智能数据采集方法有哪些?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • (二)hibernate配置管理
  • (二)斐波那契Fabonacci函数
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原)Matlab的svmtrain和svmclassify
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转载)利用webkit抓取动态网页和链接
  • (转载)深入super,看Python如何解决钻石继承难题
  • .net 受管制代码
  • .net6+aspose.words导出word并转pdf
  • .NET连接MongoDB数据库实例教程
  • .NET下ASPX编程的几个小问题
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [ANT] 项目中应用ANT
  • [BT]BUUCTF刷题第4天(3.22)
  • [BZOJ 1040] 骑士
  • [Docker]五.Docker中Dockerfile详解
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [Electron] 将应用打包成供Ubuntu、Debian平台下安装的deb包