Go-Ldap-Admin Go-Ldap-Admin
首页
  • 产品概述
  • 安装入门
  • 参与贡献
  • 最佳实践

    • 动态字段关系管理
    • 配置钉钉同步
    • 配置企业微信同步
    • 配置企业飞书同步
  • 常见问题
版本历史
  • openLDAP
捐赠支持
在线体验 (opens new window)
  • Fantastic-admin 开箱即用的管理系统框架 (opens new window)
GitHub (opens new window)
首页
  • 产品概述
  • 安装入门
  • 参与贡献
  • 最佳实践

    • 动态字段关系管理
    • 配置钉钉同步
    • 配置企业微信同步
    • 配置企业飞书同步
  • 常见问题
版本历史
  • openLDAP
捐赠支持
在线体验 (opens new window)
  • Fantastic-admin 开箱即用的管理系统框架 (opens new window)
GitHub (opens new window)
  • openLDAP

    • 捋透openLDAP的基础概念
      • 前言
      • 介绍
      • 目录树概念
      • 属性详解
        • 基础字段
        • 用户字段
        • 分组字段
      • 参考
    • 简单认识objectCLass以及常见应用
    • openLDAP查询语法整理入门
  • 周边相关
  • openLDAP
二丫讲梵
2022-06-04
目录

捋透openLDAP的基础概念

# 前言

  • 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 中维护的数据大概会像如下目录树:

image_20220711_175658

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

# 目录树概念

  • 目录树

    在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目 (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

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

# 用户字段

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

  • objectClass : top 、 person 、 organizationalPerson 、 inetOrgPerson 、 posixAccount

  • 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 相同的号码。

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

  • homeDirectory

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

  • loginShell

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

  • carLicense

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

  • homePhone

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

  • homePostalAddress

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

  • roomNumber

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

  • secretary

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

# 分组字段

  • objectClass : top 、 groupOfNames 、 posixGroup

  • displayName

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

  • description

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

  • gidNumber

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

  • entryUuid

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

  • member

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

  • memberUid

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

# 参考

  • https://support.google.com/cloudidentity/answer/9188164?hl=zh-Hans (opens new window)
  • https://datatracker.ietf.org/doc/html/rfc4519 (opens new window)
  • https://xujiyou.work/DevOps/LDAP/LDAP%E5%85%A5%E9%97%A8.html (opens new window)
帮助我们改善此页面 (opens new window)
上次更新: 2023/10/14, 16:01:05
简单认识objectCLass以及常见应用

简单认识objectCLass以及常见应用→

Theme by Vdoing | Copyright © 2022-2025 Eryajf | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式