Ldap简单介绍(转)

2023-10-27

        注:文章内容转载,觉得对ldap初次接触的你我非常的实用。




        关于LDAP的概念随便网上有很多,我不想重复,这里只是说一下我自己的 理解。都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的 目录协议。

        几个很重要的概念,以后会用到:
        ---------------------------------------------
        dn :一条记录的位置
        dc :一条记录所属区域
        ou :一条记录所属组织
        cn/uid:一条记录的名字/ID
        ---------------------------------------------

        实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据
        库做比较,通常会得到更好的理解:

        MYSQL用“表”储存数据,LDAP用“树” MYSQL指定一条记录要3个条件:DB、TABLE、ROW。
        LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以
        无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它
        的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后
        是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有
        这DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据
        库表时,通常为了方便管理而加上一个‘id’字段吗?)。 好了!这时我
        们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉
        上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接
        爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树
        (dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),苹果
        (cn=honglv),好了!位置出来了:
        dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com

        一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个
        苹果……,同样,在LDAP里也不可能存在2个相同的dn。


        LDAP数据填充原理:
        一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个
        分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,
        你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据
        库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做:
        ---------------------------------------------
        1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的
        是理解,所以具体步骤就不说了,反正就是在这一步建立了一个
        “dc=ourschool,dc=org”这样一个“树根”。 注意:我把它理解成“目录”,
        或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件
        系统的朋友会更容易理解。
        2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、
        “dn:ou=film,dc=ourschool,dc=org”……
        3、当然是在每个系里面建立专业,比如
        “dn:ou=linux,ou=computer,dc=ourschool,dc=org”……
        4、(开始长苹果吧!)加学生喽——
        “dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”……
        5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反
        正记录是可以编辑的。
        ---------------------------------------------


        LDAP记录的详细信息
        dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org
        objectClass:organizationalPerson
        cn:stan
        cn:小刀
        sn:小刀
        description:a good boy
        (以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数
        据库中)
        上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没
        有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。
        ---------------------------------------------
        Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要
        把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整
        体,它只是属性dn的值。
        Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP
        每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时
        候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我!
        Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男
        地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是
        说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值
        等,他们都给你规定好了。 幸好你有选择的权利,比如这次我们是储存
        学生信息,那么我们就定义一个
        “objectClass:organizationalPerson”,这样“organizationalPerson”
        这个类所规定的所有属性我们都可以用了,而且确实很适合我们。 虽然
        这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶
        替。 如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这
        个东西,我也期望高手指点啊 :)
        ---------------------------------------------


        好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :)

        ##############################################################

        关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽:
        http://www.mandrakesecure.net/en/docs/*ldap*-auth.php<http://www.mandrakesecure.net/en/docs/ldap-auth.php>
        上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。

        关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说
        就是重复了。
        ##############################################################
        其它相关资源:
        yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~)
        http://www.open*ldap*.org/ <http://www.openldap.org/> (说实话,我一直没用上它,不过它是官方网站,不提也不好)
        http://*ldap*.akbkhome.com/ <http://ldap.akbkhome.com/> (什么 ‘类’下面有什么‘属性’,在这里找)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ldap简单介绍(转) 的相关文章

  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 在MySQL中生成随机字符串

    我正在尝试使用函数在 phpmyadmin 中获取随机字符串 我有以下代码 CREATE FUNCTION randomPassword RETURNS varchar 128 BEGIN SET chars ABCDEFGHIJKLMNO
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • 无法在 mysql-apt-config [Ubuntu 14.04] 中选择“确定”

    我使用的是 Ubuntu 14 04 sudo apt get update总是给我这个选项来配置 mysql apt config 我尝试选择版本 按 tab gt 在 确定 上突出显示的键 按 Enter 但没有任何反应 它再次返回并突
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • JDBC 错误:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我在 Java Eclipse 中收到错误消息 我在 MySql 中有一个数据库 它有列 String user name int id time int id desk int user password 我想
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • MySQL:如何仅获取正值的平均值?

    假设我有 INT 列 并且我使用 1 来表示插入时没有可用数据 我想获得该列中所有 0 或更大值的平均值 这可能吗 Thanks 我忘了提及 我正在与其他 AVG 一起执行此操作 因此从选项卡中选择 avg a avg b avg d 所以
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的

随机推荐

  • 网络攻防——kali操作系统基本使用-调用摄像头

    1 阅读前的声明 本文章中生成的木马带有一定的攻击性 使用时请遵守网络安全相关的法律法规 恶意攻击操作系统属于违法行为 2 利用kali操作系统的metasploit攻击windows操作系统 kali中打开终端最好是进入root sudo
  • Spring Cloud Alibaba实战(八) - Dubbo + Nacos

    目录 一 Nacos动态配置 二 Nacos注册中心 三 Sentinel之限流 四 Sentinel之熔断 五 Gateway之路由 限流 六 Gateway之鉴权 日志 七 Gateway搭配Nacos实现动态路由 八 Dubbo Na
  • libcareplus生成热补丁文件

    libcareplus生成热补丁文件 kpatch gensrc汇编文件生成 使用kpatch strip的 strip裁剪不需要关注的节 使用kpatch strip的 rel fixup修正重定位信息 通过strip strip unn
  • Arduino制作温湿度计

    之前买的arduino套装 里面有一个LCD显示屏 就想用它加上手头的一些传感器做点实用的东西 顺便验证一下显示屏是否可用 于是想到了可以做一个温湿度计 实验目的 将温湿度传感器采集的温湿度显示在LCD显示屏上 首先准备工作 1 ardui
  • css区别margin、padding、width、height值为百分比

    margin padding设置为百分比 是相对父元素宽来说的 width设置百分比是相对父元素宽来说的 height设置百分比是相对父元素高来说的 使用padding占位的好处就是布局不会因为图片没有加载而改变
  • 4步教你打造好莱坞科幻特效

    大家一定有看过好莱坞电影 电影里的一幕大家一定印象深刻 男主角在电脑前熟练地敲着键盘 电脑屏幕飞快地闪动 字符也在快速跳动 很有科技感 这样的效果 在 Linux 下也可以实现 甚至连不懂任何 IT 技术的小白跟着本教程也可以轻松装13 我
  • 【数据结构】两栈共享空间(双端栈)

    1 定义 两栈共享空间 使用一个数组来存储两个栈 让一个栈的栈底为该数组的始端 另一个栈的栈底为该数组的末端 两个栈从各自的端点向中间延伸 栈1的底固定在下标为0的一端 栈2的底固定在下标为StackSize 1的一端 top1和top2分
  • 学习软件测试真的三个月可以找到工作吗?

    最近我看到有很多同学私信我 都在问我学了三个月的测试 现在工作怎么样 薪资如何 学的东西能不能在公司里面用到 今天看到这些信息 我就刚好写一篇文章 给大家科普一下 本人之前是做销售行业的 之前写的文章有提到过 因为销售行业竞争太大 并且每个
  • macOS虚拟机安装全过程(VMware)

    作为一名忠实果粉 我最大的愿望就是能够拥有一台Macbook 体验macOS 但是作为学生党 这价钱 贵到离谱啊 不过 VMware这个神器 可以解决一切问题 既然macOS可以在Macbook上运行 为什么就不能在VMware虚拟机上运行
  • python x 0b1010_下面代码的输出结果是

    单选题 下面代码的执行结果是 x 2 x 3 5 2 单选题 下面代码的输出结果是 x 0o1010 print x 单选题 下面代码的执行结果是 s 11 5in eval s 1 2 单选题 关于CSV文件的描述 以下选项中错误的是 单
  • 前端开发--CSS基础

    快速生成css样式 采用简写的方式即可 w200 tab键 width 200px lh200 tab键line height 200px web服务器 免费的远程服务 免费空间 http free 3v do css的书写顺序 布局定位属
  • mac外接显示屏开启hidpi的方法

    之前一直用着switchResX 但是手贱升级到macos10 14之后就失效了 只好另寻别的方法了 准备工作 RDM 开源的更改分辨率插件 快捷下载 PlistEdit PRO plist文件修改器 在线16进制和10进制互转工具 1 关
  • 加州伯克利计算机科学录取,2020加州大学伯克利分校统计学录取案例。

    一 学生背景 本科院校类型 美国本科 本科专业 Applied Mathematics GPA 3 4 4 0 GRE 321 录取项目 MA in Statistics 二 录取学校加州大学伯克利分校介绍 加州大学伯克利分校 Univer
  • HDU 2888 Check Corners

    题目链接 http acm hdu edu cn showproblem php pid 2888 include
  • Vue3 readonly

    readonly 接收一个 ref 或者 reactive 包装对象 返回一个只读的响应式对象 实例
  • ubuntu20.04防火墙相关命令整理

    1 查看防火墙状态 sudo ufw status 2 开启防火墙 sudo ufw enable 3 关闭防火墙 sudo ufw disable 4 重启防火墙 sudo ufw reload 4 开启指定端口 sudo ufw all
  • pytorch踩坑日记

    昨天使用pytorch写一个程序 程序写完之后却一直不能正确运行 今天定位到了代码的问题所在 我的代码其中有一处逻辑是这样的 get a 这里的a就是我想反向求导更新的参数 b torch nonzero a 得到a里面所有不为0的下标 f
  • Spring自定义注解定义AOP配置去xml

    原理参考ImportBeanDefinitionRegistrar SPI简化Spring开发 spring中AOP使用非常广泛 引入方式一般分为两种 注解方式或xml方式 直接方式使用 AspectJ这样的注解 其缺点是需要手写切面实现业
  • 机器学习笔记--1.6数据可视化

    1 表与线性结构的可视化 Python提供四种容器结构 list dict set tuple来装载数据 其中线性结构有两种 list和tuple 由于tuple是只读结构 仅用于外部生成器生成的数据 所以最常用的线性结构就是list im
  • Ldap简单介绍(转)

    注 文章内容转载 觉得对ldap初次接触的你我非常的实用 关于LDAP的概念随便网上有很多 我不想重复 这里只是说一下我自己的 理解 都说它是 轻量级目录协议 太专业 我不懂 我只把它想象成 简单 的 目录协议 几个很重要的概念 以后会用到