ldap概述
官网: https://www.openldap.org/ LdapAdmin工具: http://www.ldapadmin.org/
什么是ldap
-
LDAP是轻量目录访问协议,Lightweight Directory Access Protocol。按照我们对文件目录的理解,ldap可以看成一个文件系统,类似目录和文件树
-
openldap,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。
ldap的信息模型
ldap的信息模型是建立在“条目”(entries)的基础上。一个条目是一些属性的集合,并且具有一个全局唯一的“可区分名称”DN,一个条目可以通过DN来引用。每一个条目的属性具有一个类型和一个或者多个值。类型通常是容易记忆的名称,比如“cn”是通用名称(common name),或者“mail”是电子邮件地址。
ldap常用的属性列表:
关键字 | 英文全称 | 含义 |
---|---|---|
dc | Domain Component | 域名的部分,其格式是将完整的域名分成几部分,如域名example.com表示成dc=example,dc=com |
uid | User Id | 用户ID,如“tom” |
ou | Organization Unit | 组织单位,类似于Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元) |
cn | Common Name | 公共名称,如“Thomas Johansson” |
sn | Surname | 姓,如“Johansson” |
dn | Distinguished Name | 唯一辨别名,类似于Linux文件系统中的绝对路径,每个对象都有一个唯一名称,如“uid=tom,ou=market,dc=example,dc=com”,在一个目录树中DN总是唯一的 |
rdn | Relative dn | 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构无关的部分,如“uid=tom”或“cn=Thomas Johansson” |
c | Country | 国家,如“CN”或“US”等 |
o | Organization | 组织名,如“Example,Inc.” |
ldap的objectClass
ldap通过属性objectClass来控制一个属性必须出现或允许出现在一个条目中,它的值决定了该条目必须遵守的模式规则。
olc表示 OpenLdap Configuration
objectClass | 含义 |
---|---|
olcGlobal | 全局配置文件类型,主要是cn=config.ldif的配置项 |
olcSchemaConfig | schema配置文件类型 |
olcDatabaseConfig | 数据库配置文件类型,可以取值为olcDatabase={-1}frontend, olcDatabase={0}config, olcDatabase={1}monitor, olcDatabase={2}mdb |
olcMdbConfig | mdb配置文件类型 |
top | 顶层对象 |
organization | 组织,比如公司名称,顶层对象 |
organizationalUnit | 重要,一个目录节点,通常是group,或者部门这样的含义 |
inetOrgPerson | 重要,我们真正的用户节点类型,person类型,叶子节点 |
groupOfNames | 重要,分组的group类型,标记一个group节点 |
olcModuleList | 配置模块的对象 |
安装
-
编译安装
-
yum 安装
使用yum安装完openldap后,/etc/openldap包含如下文件:
.
|-- certs
|-- check_password.conf
|-- ldap.conf
|-- schema
| |-- collective.ldif
| |-- collective.schema
| |-- corba.ldif
| |-- corba.schema
| |-- core.ldif
| |-- core.schema
| |-- cosine.ldif
| |-- cosine.schema
| |-- duaconf.ldif
| |-- duaconf.schema
| |-- dyngroup.ldif
| |-- dyngroup.schema
| |-- inetorgperson.ldif
| |-- inetorgperson.schema
| |-- java.ldif
| |-- java.schema
| |-- misc.ldif
| |-- misc.schema
| |-- nis.ldif
| |-- nis.schema
| |-- openldap.ldif
| |-- openldap.schema
| |-- pmi.ldif
| |-- pmi.schema
| |-- ppolicy.ldif
| `-- ppolicy.schema
`-- slapd.d
|-- cn=config
| |-- cn=schema
| | `-- cn={0}core.ldif
| |-- cn=schema.ldif
| |-- olcDatabase={-1}frontend.ldif
| |-- olcDatabase={0}config.ldif
| |-- olcDatabase={1}monitor.ldif
| `-- olcDatabase={2}hdb.ldif
`-- cn=config.ldif
# olc表示 OpenLdap Configuration
默认配置文件,位于 /etc/openldap/slapd.d,文件格式为LDAP Input Format(ldif)
如何使用ldap实现如下的组织架构
.
+-- company
+-- ceo-Abc
+-- HR
| +-- hr-a
+-- 市场
| +-- a
+-- 研发
| +-- cto-Abc
| +-- dev1
| | +-- dev-a
| | +-- dev-b
| | +-- manager-c
| +-- dev2
| +-- dev3
+-- 行政