二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

    • ldap服务端快速部署
    • web部署和用户管理思路以及密码自助修改
    • 集成Zabbix,Jenkins,GitLab,JumpServer,Harbor,Nginx实战
    • 通过命令行管理用户分组备份等工作
    • ldap常见错误码
    • docker-compose部署openldap时初始化数据的两种方式
    • openLDAP入门系列笔记第一篇--捋透openLDAP的基础概念
      • 前言
      • 介绍
      • 目录树概念
      • 属性详解
        • 基础字段
        • 用户字段
        • 分组字段
      • 参考
    • openLDAP入门系列笔记第二篇--简单认识objectCLass以及常见应用
    • openLDAP入门系列笔记第三篇--ldapsearch查询语法整理入门
  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • OpenLdap
二丫讲梵
2022-07-17
目录

openLDAP入门系列笔记第一篇--捋透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 中维护的数据大概会像如下目录树:

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

# 目录树概念

  • 目录树

    在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目(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)
微信 支付宝
上次更新: 2024/09/26, 21:41:44
docker-compose部署openldap时初始化数据的两种方式
openLDAP入门系列笔记第二篇--简单认识objectCLass以及常见应用

← docker-compose部署openldap时初始化数据的两种方式 openLDAP入门系列笔记第二篇--简单认识objectCLass以及常见应用→

最近更新
01
学习周刊-总第212期-2025年第21周
05-22
02
从赵心童世锦赛夺冠聊聊我的斯诺克情缘
05-16
03
学习周刊-总第211期-2025年第20周
05-15
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式