《Linux/UNIX OpenLDAP实战指南》——1.3 OpenLDAP schema概念

1.3 OpenLDAP schema概念

1.3.1 schema介绍及用途
schema是OpenLDAP软件的重要组成部分,主要用于控制目录树中各种条目所拥有的对象类以及各种属性的定义,并通过自身内部规范机制限定目录树条目所遵循的逻辑结构以及定义规范,保证整个目录树没有非法条目数据,避免不合法的条目存在目录树中,从而保障整个目录树信息的完整性、唯一性。

在OpenLDAP目录树中,schema用来指定一个条目所包含的对象类(objectClass)以及每一个对象类所包含的属性值(attribute value)。其属性又分为必要属性和可选属性两种,一般必要属性是指添加条目时必须指定的属性,可选属性是可以选择或不选择的。schema定义对象类,对象类包含属性的定义,对象类和属性组合成条目。

目录树中条目可理解为是一个具体的对象,它们均是通过schema创建的,并符合schema的标准规范,如对你所添加的数据条目中所包含的对象类级属性进行检测,检测通过完成添加,否则打印错误信息。因此,schema是一个数据模型,数据模型可以理解为关系数据库的存储引擎,如MyISAM、InnoDB,主要用来决定数据按照什么方式进行存储,并定义存储在目录树不同条目中数据类型之间的关系。

schema是一个标准,定义了OpenLDAP目录树对象和属性存取方式,这也是OpenLDAP能够存储什么数据类型的取决因素。因此数据有什么属性等均根据schema来实现。OpenLDAP默认的schema文件一般存放在/etc/openldap/schema/目录下,此目录下每个文件定义了不同的对象类和属性。如果想引用额外的schema,只需要在配置文件中通过include包含所指定的schema即可。

以下代码可用于获取当前系统OpenLDAP所使用的schema规范,了解当前所使用的schema文件,这有助于添加目录树中的条目信息,如对象类以及包含哪些属性及值,减少添加条目提示的各种语法错误。

[root@mldap01 schema]# cat /etc/openldap/slapd.conf | grep '^incl*'
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema  #定义网络信息服务
include         /etc/openldap/schema/openldap.schema #OpenLDAP自身
include         /etc/openldap/schema/ppolicy.schema  #定义用户密码规则,例如密码长度及复杂度
include         /etc/openldap/schema/collective.schema

schema在OpenLDAP目录树中承接规范、对条目所包含的objectClass以及数据字节数、格式等来保证整个目录树的完整性。

1.3.2 获取schema的途径
默认安装OpenLDAP组件后,系统的配置定义一组常用的schema文件,这组文件一般存放在/etc/openldap/schema目录内,可通过include引用。当所定义的objectClass不存在时,该如何获取objectClass?下面就介绍如何获取schema来包含objectClass。

1.服务器自身产生的schema文件
通过服务器自身软件包的安装来生成schema文件,本节以sudo为例演示其过程。

查看软件包生成的文件列表,代码如下。

# rpm -ql sudo-1.8.6p3 | grep -i schema
/usr/share/doc/sudo-1.8.6p3/schema.ActiveDirectory
/usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP
/usr/share/doc/sudo-1.8.6p3/schema.iPlanet

通过配置文件引入schema,代码如下。

# cp -f /usr/share/doc/sudo-1.8.6p3/schema.OpenLDAP /etc/openldap/schema/sudo.schema
# echo "include /etc/openldap/schema/sudo.schema" > /etc/openldap/slapd.conf

通过schema产生ldif文件,代码如下。

# slapcat -f ~/sudo/sudoSchema.conf -F /tmp/ -n0 -s "cn={0}sudo,cn=schema,cn=config" >
~/sudo/sudo.ldif
# sed -i "s/{0}sudo/{12}sudo/g" ~/sudo/sudo.ldif
# head -n-8 ~/sudo/sudo.ldif > ~/sudo/sudo-config.ldif

通过OpenLDAP指令导入目录树,代码如下。
ldapadd -Y EXTERNAL -H ldapi:/// -f ~/sudo/sudo-config.ldif
此时就可以通过sudo schema文件定义各种sudo规则从而实现用户权限的控制。

2.自定义schema文件
当所定义的objectClass不在规定范围内,就需要定义schema文件来包含objectClass。关于自定义schema在此不作过多的介绍。

关于自定义schema文件,需要注意以下几点。

保证属性名称唯一性;
通过OID标识符定义objectClass;
属性的描述;
必选属性以及可选属性集合定义。

时间: 2024-08-13 06:23:11

《Linux/UNIX OpenLDAP实战指南》——1.3 OpenLDAP schema概念的相关文章

《Linux/UNIX OpenLDAP实战指南》——2.5 OpenLDAP单节点配置案例

2.5 OpenLDAP单节点配置案例 2.5.1 安装环境规划 安装环境的拓扑图如图2-1所示. 安装环境要求如下. 环境平台:VMware ESXi 5.0.0 系统版本:Red Hat Enterprise Linux Server release 6.5 (Santiago) 软件版本:OpenLDAP-2.4.23-32 IP地址及主机名规划如表2-1所示. OpenLDAP相关软件包套件如表2-2所示. 2.5.2 主机名规划配置 LDAP服务端和客户端主机名称及对应的IP地址解析服

《Linux/UNIX OpenLDAP实战指南》——2.2 OpenLDAP安装

2.2 OpenLDAP安装 2.2.1 OpenLDAP安装方式 在UNIX发行操作系统环境下安装OpenLDAP软件一般有两种方式:一种是通过源码编译安装,另一种则是通过光盘自带的rpm软件包进行安装.下面会分别介绍这两种安装方式.安装OpenLDAP服务器需要提供守护进程和传统的OpenLDAP管理配置工具,主要是slapd和ldap-utils套件. 2.2.2 OpenLDAP安装步骤 要安装OpenLDAP,步骤如下. 1)获取OpenLDAP软件包. 2)安装OpenLDAP软件包

《Linux/UNIX OpenLDAP实战指南》——2.3 Linux平台安装

2.3 Linux平台安装 2.3.1 yum用途及语法 yum仓库主要用于解决软件包依赖关系(这里以本地yum源为例进行配置). yum仓库配置文件的语法及参数如下. 1.yum配置文件语法 yum配置文件语法如下. # cat /etc/yum.repos.d/define.repo [repo_name] name= baseurl= enabled= gpgcheck= gpgkey= 2. yum配置文件语法解释 yum配置文件的语法解释如下. [repo_name] 含义:[ ]内是

《Linux/UNIX OpenLDAP实战指南》——导读

前言 随着互联网行业的不断发展,企业也在不断壮大,为了满足客户需求,后端服务器数量日益增加.此时对于后端运维管理人员而言,工作量也在不断增加,许多资源管理人力已经无法满足,反复的工作也使运维管理人员变得枯燥无味.此时开源自动化运维管理就进入运维人员眼线,例如账号统一管理的OpenLDAP.自动化部署的Puppet.自动化安装服务器的Cobbler.云管理的OpenStack等. 由于作者工作环境设备数量达1000+.应用管理平台40套+,同时由于服务器设备的增加,账号的数量也在不断增加,账号管理

《Linux/UNIX OpenLDAP实战指南》——2.7 OpenLDAP用户以及与用户组相关的配置

2.7 OpenLDAP用户以及与用户组相关的配置 添加用户和用户组的方式有两种.一种是将系统用户通过migrationtools工具生成LDIF文件并结合ldapadd命令导入OpenLDAP目录树中,生成OpenLDAP用户.另一种通过自定义LDIF文件并通过OpenLDAP命令进行添加或者修改操作.本节分别介绍两种方法的实现来完成OpenLDAP用户的添加. 2.7.1 通过migrationtools实现OpenLDAP用户及用户组的添加migrationtools开源工具通过查找/et

《Linux/UNIX OpenLDAP实战指南》——2.4 OpenLDAP配置

2.4 OpenLDAP配置 在OpenLDAP 2.4版本中,配置OpenLDAP的方法有两种:一种通过修改配置文件实现配置,另一种通过修改数据库的形式完成配置. 通过配置数据库完成各种配置,属于动态配置且不需要重新启动slapd进程服务.此配置数据库(cn=config)包含一个基于文本的集合LDIF文件(位于 /etc/openldap/slapd.d目录下).当前仍然可以使用传统的配置文件(slapd.conf)方式进行配置,通过配置文件来实现slapd的配置方式.slapd.conf可

《Linux/UNIX OpenLDAP实战指南》——2.9 OpenLDAP控制策略

2.9 OpenLDAP控制策略 2.9.1 通过slapd.conf定义用户策略控制 默认情况下,不允许OpenLDAP用户自身修改密码,仅管理员具有修改权限.为了提高个人账号的安全性,需要让用户自身可以修改并更新密码信息,不需要管理员干涉.具体步骤如下. 1)定义访问控制策略. 编辑slapd.conf配置文件,定位access行,添加如下内容. access to attrs=shadowLastChange,userPassword by self write #只允许自身修改 by *

《Linux/UNIX OpenLDAP实战指南》——1.9 本章总结

1.9 本章总结 本章介绍了OpenLDAP产品.功能及优点.适用场景,让读者慢慢对陌生而强大的自动化账号管理软件进行系统的了解.并针对OpenLDAP的组织架构.OpenLDAP关键术语(schema.objectClass.attribute.LDIF)及相关实现方式进行详细介绍.最后介绍企业中自动化运维解决方案. OpenLDAP术语对于后期高级配置以及应用平台集成起到非常重要的铺垫作用,希望读者能够认认真真阅读本章.

《Linux/UNIX OpenLDAP实战指南》——1.8 自动化运维解决方案

1.8 自动化运维解决方案 1.8.1 互联网面临的问题 当今局域网.互联网不断发展,其网络规模也在不断扩大,为了集中管理主机及其相关资源,我们可以通过DHCP及DNS服务器来自动分配IP地址.子网掩码.网关.主机名等相关网络配置信息.随着企业规模不断发展,系统规模不断增加,那么作为系统运维管理人员维护服务器有些力不从心,比如: 当公司业务不断发展,当前业务系统无法满足需求,这时该如何快速部署系统并且应用到当前的业务系统? 批量对业务系统进行变更以及管理,传统方式需要通过登录每台机器进行操作管理