LDAP 常用命令实操

简介: 在 实操命令之前,得先有一个 LDAP 服务器,我就不搭建 AD域了,我可以直接在 linux 里面搭建一个简单的 LDAP 服务器,学习使用 , 我使用的云服务器操作系统是 ubuntu 18.04ubuntu 中 ldap服务器搭建

在 实操命令之前,得先有一个 LDAP 服务器,我就不搭建 AD域了,我可以直接在 linux 里面搭建一个简单的 LDAP 服务器,学习使用 , 我使用的云服务器操作系统是 ubuntu 18.04

ubuntu 中 ldap服务器搭建

我们可以简单的在 linux 里面搭建一个 LDAP 服务器,大概分为如下几步:

  • 修改 linux 的 host 文件,添加一个 host ,将自己的域名写进去
  • 安装 ldap
  • 配置 ldap
  • 添加 ldap 里面的组织结构
  • ldap 的查询指令使用

1、修改 linux 的 host 文件,添加一个 host ,将自己的域名写进去

127.0.1.1    xiaomotong.com

image.png

2、安装 ldap

直接执行命令安装 ldap

# ldap
ldapadd                                       
ldapaddgroup                                  
ldapaddmachine                                
ldapadduser                                   
ldapaddusertogroup                            
ldapcompare      
ldapdelete       
ldapdeletegroup  
ldapdeletemachine
ldapdeleteuser
ldapsearch
ldapsetpasswd
ldapsetprimarygroup
ldapurl
ldapwhoami
ldapmodrdn         
ldappasswd         
ldaprenamegroup    
ldaprenamemachine  
ldaprenameuser
ldapinit           
ldapmodify         
ldapmodifygroup    
ldapmodifymachine  
ldapmodifyuser
ldapdeleteuserfromgroup 
ldapexop                
ldapfinger              
ldapgid                 
ldapid   

ldap 涉及的命令很多,感兴趣的可以一个一个的玩个够,因为 ldap 服务器绝大部分是都是在做查询操作,特别是在 查询和添加的比例在 10:1 以上的时候,更能体现出 ldap 服务器的高性能,他可是所有数据库中最快的数据库了

3、配置 ldap

做一个 ldap 的基本配置

shell

复制代码

sudo dpkg-reconfigure slapd
  • 配置自己的 dns 域名

image.png

  • 配置好自己的密码,这个密码很重要,可不要忘记了,建议输个简单的
  • 关闭防火墙配置,ldap 服务器默认的端口号是 389,加密的时候使用的端口号是 636
ufw allow proto tcp from any to 127.0.0.1 port 389
ufw allow proto tcp from any to 127.0.0.1 port 636 

4、添加 ldap 里面的组织结构

我们可以使用 ldapadd 命令添加 ldap 的组织结构,我们可以使用 ldapadd -X或者是其他参数来查看帮助文档

image.png

对于添加 ldap 组织结构,我们简单的一般会使用这几个参数:

  • -x

简单认证一下

  • -D

绑定 DN

  • -W

需要提供绑定用户的密码

  • -f

指定读取的文件

我们来尝试添加一些组合用户吧

  • 我们在域下面添加几个 ou 组织单元
  • People
  • dev
  • golang
  • c++
  • java

我们任意命名ldap 的文件 add.ldif  ,可以随便命名主要是里面的内容需要懂

dn: ou=People,dc=xiaomotong,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=dev,dc=xiaomotong,dc=com
objectClass: organizationalUnit
ou: dev
dn: ou=golang,ou=dev,dc=xiaomotong,dc=com
objectClass: organizationalUnit
ou: golang
dn: ou=clang,ou=dev,dc=xiaomotong,dc=com
objectClass: organizationalUnit
ou: clang
dn: ou=java,ou=dev,dc=xiaomotong,dc=com
objectClass: organizationalUnit
ou: java

上述文本表达的意思很简单,也很明白

dn ,上篇文章我们说过,他是代表一个条本的唯一名字,辨别名,例如 dn: ou=java,ou=dev,dc=xiaomotong,dc=com  我们就可以从右向左来看,域名是dc=xiaomotong,dc=com,父组是ou=dev 自己这个组是ou=java

shell

复制代码

# ldapadd -x -D cn=admin,dc=xiaomotong,dc=com -W -f add.ldif

image.png

执行上述添加命令,输入刚才我们设置的密码

我们可以看到,只添加成功了 3 条,添加到 c++ 的时候,ldap 给我们报语法错误了,因为我们有 ++ 字符,那么我们将其修改成 clang 吧,再来看看效果

shell

复制代码

# ldapadd -x -D cn=admin,dc=xiaomotong,dc=com -W -f add.ldif

image.png

我们可以看到,由于文本中前面几个信息,People 这个组,已经存在了,因此 ldap 也不继续向下执行了

那么我们将后面的 2 条数据(clang ou 和 java ou) ,拷贝到 文件 add2.ldif ,来继续实践添加组织结构

add2.ldif

image.png

# ldapadd -x -D cn=admin,dc=xiaomotong,dc=com -W -f add2.ldif

image.png

看到结果,正确将数据添加到 ldap 中,没有问题

5、ldap 的查询指令使用

上面我们说到 ldap 支持的命令很多,我们查询的时候可以使用 ldapsearch 命令

我们不知道 ldapsearch 命令如何使用,我们可以随便输入一个参数,就可以看到具体的帮助信息了,例如

shell

复制代码

# ldapsearch -X

image.png

image.png

查询的时候,使用参数比较多的是如下几个,其他的参数也不难,感兴趣的可以一个一个的尝试一下:

  • -x

简单认证一下

  • -p

指定服务器端口

  • -h

指定服务器地址

  • -b

基于哪个 base dn 进行查询

  • -LLL

以 LDIF 格式打印响应结果

那么我们来简单查询一下 xiaomotong.com 里面都有哪些组织结构


# ldapsearch -x -LLL -b dc=xiaomotong,dc=com

image.png

没毛病,我们刚才添加的组织结构都能够查询出来

我们也可以使用上次文章介绍到的 ldap 可视化工具查看我们的 ldap 组织结构信息

  • Softerra LDAP Browser 4.5

image.png

基本上会如何添加组织结构,和查询组织结构,那么我们就有办法将 ldap 中的数据同步到我们自己的系统中了


欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
SQL API 数据库
Seata AT模式问题之抛出异常触发回滚如何解决
Seata是一款开源的分布式事务解决方案,旨在提供高效且无缝的分布式事务服务;在集成和使用Seata过程中,开发者可能会遇到不同的异常问题,本合集针对Seata常见异常进行系统整理,为开发者提供详细的问题分析和解决方案,助力高效解决分布式事务中的难题
919 108
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
2413 0
|
域名解析 Cloud Native jenkins
【Drone+Gitlab】一条龙服务,直接起飞 — 从介绍->部署->配置->写.drone.yml流水线+常见的报错解决
gitlab+drone部署安装,编写.drone.yml流水线 drone是一个持续集成化工具,gitlab是一个代码仓库,.drone.yml流水线编写 fatal: unable to access,could not resolve host 克隆地址连接不上(修改默认clone克隆),没有Trusted选项,启动drone-server时添加(--env=DRONE_USER_CREATE=username:root,admin:true) .drone.yml文件中sed命令报错
2402 0
【Drone+Gitlab】一条龙服务,直接起飞 — 从介绍->部署->配置->写.drone.yml流水线+常见的报错解决
|
11月前
|
安全 BI 数据安全/隐私保护
分享三款性价比超高的AD域管理工具
目前很多企业利用Active Directory (AD )来确保网络环境安全并维护更便捷的管理用户帐户。但还是有很多复杂的问题需要工具来辅助解决,在选择什么样的工具这个问题上,企业通常需要遵守严格的预算限制。
576 1
分享三款性价比超高的AD域管理工具
|
7月前
|
人工智能 自然语言处理 API
Cline:29.7K Star!一文详解VSCode最强开源AI编程搭子:一键生成代码+自动跑终端+操控浏览器...
Cline 是一款集成于 VSCode 的 AI 编程助手,支持多语言模型,实时检查语法错误,帮助开发者提高编程效率。通过智能化手段,Cline 可以生成代码、执行终端命令、调试 Web 应用,并扩展更多功能。
2328 73
|
11月前
|
中间件 测试技术 持续交付
软件测试中的自动化测试实践指南
【10月更文挑战第4天】 本文探讨了软件测试中自动化测试的重要性,并详细介绍了如何有效实施自动化测试。从选择合适的工具到设计测试用例,再到实际执行与持续集成,我们将一步步引导读者了解自动化测试的全过程。通过具体案例分析,我们展示了自动化测试在提高测试效率、保障软件质量方面的显著优势。无论是初学者还是资深测试工程师,都能从中获得实用的指导和启示。
271 1
|
10月前
|
存储 运维 监控
开源日志分析工具
【10月更文挑战第20天】
782 3
|
JSON 数据格式 Docker
Docker 网络命令大全,建议收藏!
【7月更文挑战第22天】
499 7
Docker 网络命令大全,建议收藏!
|
监控
探索ERP系统的实施流程与方法论
探索ERP系统的实施流程与方法论
1713 2