Linux 安装并配置 OpenLDAP 新编(7)第三方工具
Linux 安装并配置 OpenLDAP 新编(7)第三方工具
前面经过多个章节的学习,应该基本了解了 OpenLDAP 的部署知识,在前面的操作中,我们都是用命令行的方式,对于系统初始化配置来说自然没什么问题。但是对于长期的运维来说,这确实是非常不友好的一件事,本章就来讲一讲有哪些第三方的图形化管理工具。
Apache Directory Studio
正如其名,是由 Apache 基金会提供的一个开源软件,有独立的运行版本,也有 Eclipse 的插件版本。由于资料较多,不再赘述,默认情况下不会显示条目的隐藏属性,可以通过下面的方式启用:
在链接属性中,点选 Browser Options 标签后,勾选下面的: Fetch operational attributes while browsing 。
Ldap Admin
Ldap Admin也是一个老牌的管理客户端,使用比较简单也不再赘述。同样的,默认情况下不会显示条目的隐藏属性,可以通过下面的方式启用:
在链接属性中,点选 Attributes 标签后,勾选下面的 Show operational attributes 后,点击右侧的 Add 按钮添加其他想要显示的隐藏属性。
Ldap Account Manager
除了客户端的管理工具之外,还有许多基于 PHP 开发的Web管理工具,只是比较让人无语的一点是,都2022年了,为什么一讲起管理端都是讲 phpLdapAdmin ,并不是单纯的说其界面如何,目前只支持到 php5 ,为了安装它还要再装个老版本的php,实在划不来。新的版本似乎还在开发中。
个人强烈推荐 Ldap Account Manager ,它同样是一款基于 php 开发的Web管理工具,虽然有收费版本,但是免费版基本适用于多数情况。为了省事,后面统一简称为 lam 。
安装依赖环境
除了安装必要的 php 环境之外,还需要下面的一些组件,为了省事这里只列出了yum方式安装的,起来的类似。
yum install php-ldap php-xml php-gd php-zip php-gmp php-json php-mbstring -y
密码管理
刚开始使用 lam 时,比较懵逼的一点是, lam 中有三处密码,而这很容易引起混淆。这三个密码分别为:服务器配置文件 密码、通用设置 密码以及 LDAP服务端 密码,请注意区分。其中的 通用设置 密码默认为 lam 。
编辑服务器资料
初次运行,需要先配置服务端资料配置,点击右上角的 LAM configuration 后根据提示创建新的配置资料。服务器设置文件主要分为4个标签:
通用设置
点选 通用设置 标签,配置 工具设置 中的 树状结构后缀 与 安全设定 中的 合法用户列表。
帐号类型
点选 帐号类型 标签,配置 激活帐号类型 中 用户 和 组 的 LDAP后缀配置项。
登入系统
登入系统时,需要输入的密码是 LDAP 服务器端配置的初始密码。第一次进入系统,会提示是否为 帐号类型 设置LDAP后缀,确认提示信息和我们配置的信息一致后点击 建立 。
使用方式
这里的资料也十分丰富,此处也不再赘述。
Self Service Password
在用户的管理中,密码管理是其中不可或缺的一部分。而允许所有人登录服务器直接修改密码也不现实,因此我们可以使用一个第三方工具来允许用户自行修改自己的密码。这个工具叫: Self Service Password 。
同前面嗯 lam 一样,这是一个基于php开发的web项目,当然你也可以通过其他方式安装,只是我觉得php部署比较简单而已。只是唯一要吐槽的是,它基于 Smarty 模板引擎开发,因此再使用前还要先安装 Smarty3 引擎,不过这个十分简单,就不再赘述了。
安装依赖环境
yum install php-ldap php-gd php-mbstring php-curl php-filter -y
配置
关于php以及相关web server转发的配置,这里也不再赘述,只单纯说下本身的配置。配置文件是位于根目录的 conf 目录中的 config.inc.php 文件,但是官方并不建议直接修改这个文件,而是复制出一个 config.inc.local.php 文件,覆写里面的配置值:
<?php
// file: config.inc.local.php
// Override config.inc.php parameters below
$lang = "cn";
$keyphrase = "9bwXF1i0sCjGalfT";
$ldap_binddn = "cn=admin,dc=example,dc=com";
$ldap_bindpw = '这里是dn的明文密码';
$ldap_base = "dc=example,dc=com";
?>
遗漏的思考
在上一章启用memberof的结尾,我们提到了关于 groupOfNames 类型的组,不一定适用于 posixAccount 类型的用户对象。但是经过实测,也是可以生效的,所以比较纳闷为什么网上的资料,都提到要使用 groupOfUniqueNames 类型等等。而且也未能搜索出两者有何根本的区别,似乎仅仅是名字的区别,再者 groupOfNames 对象是使用 member 属性来关联,而 groupOfUniqueNames 对象,是使用 uniqueMember 属性来关联。
当然,即便是有必须要使用 groupOfUniqueNames 的理由,也不是问题,只需要再添加一个 Overlay 即可。代码如下:
# enable_memberof_posix.ldif
dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: memberof
olcMemberOfRefint: TRUE
olcMemberOfDangling: ignore
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf
对比前面的配置,可以就看到,区别是在于 olcMemberOf 对象的 olcMemberOfGroupOC 和 olcMemberOfMemberAD 这两个属性不同,即 Overlay 所关联的对象和属性不同,而最终映射到用户对象上的属性, 则都是由 olcMemberOfMemberOfAD 属性所指定的 memberof 。