惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CERT Recently Published Vulnerability Notes
U
Unit 42
T
The Blog of Author Tim Ferriss
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
L
Lohrmann on Cybersecurity
Blog — PlanetScale
Blog — PlanetScale
Recorded Future
Recorded Future
D
DataBreaches.Net
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
I
Intezer
P
Palo Alto Networks Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
I
InfoQ
宝玉的分享
宝玉的分享
Security Latest
Security Latest
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threatpost
Cisco Talos Blog
Cisco Talos Blog
P
Proofpoint News Feed
博客园 - 司徒正美
H
Hacker News: Front Page
Y
Y Combinator Blog
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
NISL@THU
NISL@THU
月光博客
月光博客
有赞技术团队
有赞技术团队
Cloudbric
Cloudbric
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
A
Arctic Wolf
博客园 - 【当耐特】
W
WeLiveSecurity
V
Visual Studio Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周 学习周刊-总第239期-2025年第48周 整理我在静态服务透明代理上的极致求索之路,最后一个你绝想不到 学习周刊-总第238期-2025年第47周 我们输了,但收获颇多 太多了,太多了 学习周刊-总第237期-2025年第46周 学习周刊-总第236期-2025年第45周 学习周刊-总第235期-2025年第44周 二五年国庆二三事 学习周刊-总第234期-2025年第43周 学习周刊-总第233期-2025年第42周 学习周刊-总第232期-2025年第41周 学习周刊-总第231期-2025年第40周 学习周刊-总第230期-2025年第39周 西湖毅行 2025年开源世界逸闻三则 学习周刊-总第229期-2025年第38周 手抄《与妻书》 CNB开发与构建基于docker-cache缓存复用的配置实践心得 学习周刊-总第228期-2025年第37周 父亲善行录 学习周刊-总第227期-2025年第36周 带你认识我之看看我的高中同学录(其二) 学习周刊-总第226期-2025年第35周 带你认识我之看看我的高中同学录(其一) 认识神级MCP工具系列--用anyquery和数据库交互 学习周刊-总第225期-2025年第34周 学习周刊-总第224期-2025年第33周 学习周刊-总第223期-2025年第32周 学习周刊-总第222期-2025年第31周 学习周刊-总第221期-2025年第30周 CNB云原生开发环境届的瑞士军刀,详解qifei项目 vuepress-vdoing主题配置自建不蒜子统计 学习周刊-总第220期-2025年第29周 写在博客发表文章1000篇的节点 从claude cli的体验聊聊最大的敌人是我们自己的成见 学习周刊-总第219期-2025年第28周 学习周刊-总第218期-2025年第27周 学习周刊-总第217期-2025年第26周 理论正确,事实错误 学习周刊-总第216期-2025年第25周 学习周刊-总第215期-2025年第24周 学习周刊-总第214期-2025年第23周 学习周刊-总第213期-2025年第22周 学习周刊-总第212期-2025年第21周 从赵心童世锦赛夺冠聊聊我的斯诺克情缘 学习周刊-总第211期-2025年第20周 记录二五年五一之短暂回归家庭 学习周刊-总第210期-2025年第19周 学习周刊-总第209期-2025年第18周 学习周刊-总第208期-2025年第17周 Go开发实践之Gin框架将前端的dist目录embed到二进制 学习周刊-总第207期-2025年第16周 近期关于cobra库的一些实践心得总结 学习周刊-总第206期-2025年第15周 我的嗜好--嗑瓜子 记大宝参加幼儿园组织的清明烈士陵园扫墓活动 学习周刊-总第205期-2025年第14周 学习周刊-总第204期-2025年第13周 前端开发小笔记--在数组中给字段添加值与删除字段的操作 学习周刊-总第203期-2025年第12周 人生实苦,何以自渡 学习周刊-总第202期-2025年第11周 近期发现的一些优秀的工具提名(一) 学习周刊-总第201期-2025年第10周 学习周刊-总第200期-2025年第09周 记一次女友喝醉使我忍术破功 爱情风波--一次分手又复合的经历 学习周刊-总第199期-2025年第08周 整理我的信息源
openLDAP入门系列笔记第一篇--捋透openLDAP的基础概念
二丫讲梵 · 2022-07-18 · via 二丫讲梵

关于部署,前边已经有文章,可参考前边快速部署的文档。

# 前言

  • openLDAP 是个好东西。
  • openLDAP 不是一个很容易学习透彻上手使用的东西。
  • openLDAP 有星罗棋布的概念,你很容易迷失其中,找不到一条适合自己的出路。
  • openLDAP 没有标准答案,在各种概念之下,有各种使用方法,追求一个标准答案,可能往往会迷失自己。

本文将着力于将 ldap 中概念讲清道明,希望你看了就能懂,不再困厄烦恼。

但注意,这篇文章可能只是一个字典式的整理供你查阅,渴望通过这一篇文章直接把 ldap 入门,那就有点小瞧 ldap 的入门难度了,也就不会有那篇大名鼎鼎的:我花了一个五一终于搞懂了 OpenLDAP (opens new window)(但事实上你现在看了这篇文章,仍旧无法搞懂 OpenLDAP,看文章底下的评论区就是例证)。

# 介绍

LDAP 是轻量目录访问协议,英文全称是 Lightweight Directory Access Protocol,一般都简称为 LDAP。

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

通常我们在 ldap 中维护的数据大概会像如下目录树:

基于这张图,我们来展开相关的概念介绍。

# 目录树概念

  • 目录树

    在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目(Entry)。

  • 条目(Entry)

    条目,也叫记录项,是 LDAP 中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对 LDAP 的添加、删除、更改、检索都是以条目为基本对象的。

    LDAP 目录的条目(entry)由属性(attribute)的一个聚集组成,并由一个唯一性的名字引用,即专有名称distinguished name,DN)。例如,DN 能取这样的值:"cn=group,dc=eryajf,dc=net"。

  • 对象类(ObjectClass)

    对象类是属性的集合,LDAP 预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性,单位职工(organizationalPerson)是人员(person)的继承类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址(postalAddress)等属性。

  • 属性 (Attribute)

    每个条目都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值,属性值可以有单个、多个。

# 属性详解

要注意,如下标识的字段,即 ldap 中可查询交互使用的字段,其中原有的大小写方式,需与之一致。

# 基础字段

  • dc (Domain Component)

    域名的部分,其格式是将完整的域名分成几部分,如域名为eryajf.net变成dc=eryajf,dc=net

  • ou(Organization Unit)

    组织单位,组织单位可以包含其他各种对象(包括其他组织单元)。

  • cn (Common Name)

    常用名称,可用作分组的名字,或者用户的全名。参考 (opens new window)

  • dn (Distinguished Name)

    每一个条目都有一个唯一的标识名,dn 在 ldap 中全局唯一,相当于该条目的唯一 ID,如上边示例中的:cn=group,dc=eryajf,dc=net就是该条目的 dn。

  • rdn (Relative dn)

    一般指 dn 逗号最左边的部分,如cn=group,dc=eryajf,dc=net的 rdn 就是 cn=group

  • Base DN

    LDAP 目录树的最顶部就是根,比如上边示例中的 base dn 为 dc=eryajf,dc=net

  • description

    在不同类别中,对应不同类别的说明信息,比如用户的说明信息,分组的说明信息。

# 用户字段

用户字段依然会用到基础字段,并不代表这部分内容与上边的内容是隔离的。

  • objectClasstoppersonorganizationalPersoninetOrgPersonposixAccount

  • uid (User Id)

    用户的用户名,通常为中文拼音,或者用邮箱地址的用户名部分。

  • sn (Surname)

    用户的姓氏,对于中文环境下,可以直接用姓名填充。

  • givenName

    用户的名字,不包含姓,对于中文语境下,可灵活运用该字段。

  • displayName

    用户的显示名字,全名。

  • mail

    用户的邮箱。

  • title

    用户的职位。

  • employeeNumber

    用户的员工 ID,也可以理解为工号。

  • employeeType

    用户在单位中的角色。

  • departmentNumber

    用户所在部门的名称,通常为部门名,而非部门号。

  • businessCategory

    描述业务的种类,在中文语境中可灵活定义。参考 (opens new window)

  • userPassword

    用户密码。

  • jpegPhoto

    用户的个人资料照片。

  • photo

    用户的照片,如上这两个字段都可以用。

  • postalAddress

    用户的邮政地址,也可以直接认为是用户地址。参考 (opens new window)

  • entryUuid

    此用户专属的固定通用标识符,类似 union_id,通常用不到。

  • objectSid

    此用户专属的通用标识符,与 Windows 安全标识符兼容。

  • uidNumber

    用户的 POSIX UID 号码。如果为用户设置了 POSIX ID,这里则会显示此号码。否则,这里会显示专属的固定标识符。

  • gidNumber

    用户主要群组的 POSIX GID 号码。如果为用户设置了 POSIX GID,这里则会显示此号码。否则,则会显示与用户的 UID 相同的号码。

    注意:您无法按 uidNumbergidNumber 搜索用户,除非管理员使用 Admin SDK API (opens new window)设置了用户的 posixAccounts 属性。

  • homeDirectory

    用户的 POSIX 主目录。默认为/home/<用户名>

  • loginShell

    用户的 POSIX 登录 shell。默认为/bin/bash

  • carLicense

    车牌,通常用不上这个字段。

  • homePhone

    家庭固定电话,通常用不上这个字段。

  • homePostalAddress

    邮编,通常用不上这个字段。

  • roomNumber

    房间号码,通常用不上这个字段。

  • secretary

    秘书,通常用不上这个字段。

# 分组字段

  • objectClasstopgroupOfNamesposixGroup

  • displayName

    用户可理解的群组显示名称。

  • description

    用户可理解的群组详细说明。

  • gidNumber

    群组的 POSIX GID 号码。这是固定的专属 ID,但无法通过此 ID 高效地查找群组。

  • entryUuid

    此群组专属的固定通用标识符。

  • member

    此群组中成员的完全符合条件的名称列表。

  • memberUid

    此群组中成员的用户名列表。

# 参考