状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
介绍
LDAP 或轻量级目录访问协议是一种协议,用于通过使用文件和目录层次结构从集中位置管理相关信息。
它在某些方面的功能类似于关系数据库,可用于组织和存储任何类型的信息。 LDAP 通常用于集中式身份验证。
在本指南中,我们将介绍如何在 Ubuntu 12.04 VPS 上安装和配置 OpenLDAP 服务器。 我们将使用一些用户和组填充它。 在后面的教程中,将介绍使用 LDAP 进行 身份验证。
安装 LDAP
OpenLDAP 服务器位于 Ubuntu 的默认存储库中,位于“slapd”包下,因此我们可以使用 apt-get 轻松安装它。 我们还将安装一些额外的实用程序:
sudo apt-get update sudo apt-get install slapd ldap-utils
系统将要求您输入并确认管理员 LDAP 帐户的管理员密码。
重新配置 slapd
安装完成后,我们实际上需要重新配置 LDAP 包。 键入以下内容以调出包配置工具:
sudo dpkg-reconfigure slapd
您将被问到一系列有关您希望如何配置软件的问题。
- 省略 OpenLDAP 服务器配置? 否
- DNS域名?
- 这将创建目录路径的基本结构。 阅读消息以了解其工作原理。
- 没有关于如何配置它的固定规则。 如果您在此服务器上有一个实际的域名,您可以使用它。 否则,使用任何你想要的。
- 在本文中,我们将其称为 test.com
- 机构名称?
- 再次,这取决于你
- 我们将在本指南中使用 example。
- 管理员密码?
- 使用您在安装时配置的密码,或者选择另一个
- 使用您在安装时配置的密码,或者选择另一个
- 使用数据库后端? HDB
- 清除 slapd 时删除数据库? 否
- 移动旧数据库? 是
- 允许 LDAPv2 协议? 否
安装 PHPldapadmin
我们将通过一个名为 PHPldapadmin 的 Web 界面来管理 LDAP。 这在 Ubuntu 的默认存储库中也可用。
使用以下命令安装它:
sudo apt-get install phpldapadmin
这将安装所有必需的 Web 服务器和 PHP 依赖项。
配置 PHPldapadmin
在尝试之前,我们需要在 Web 界面配置文件中配置一些值。
以root权限打开配置文件:
sudo nano /etc/phpldapadmin/config.php
搜索以下部分并进行相应修改。
将红色值更改为您将通过域名或 IP 地址引用服务器的方式。
$servers->setValue('server','host',' domain_nam_or_IP_address ');
对于下一部分,您将需要反映在我们重新配置“slapd”时询问 DNS 域名时提供的相同值。
您必须通过分离每个域组件将其转换为 LDAP 可以理解的格式。 域组件是由点分隔的任何内容。
然后将这些组件作为“dc”属性的值给出。
例如,如果您的 DNS 域名条目是“imaginary.lalala.com”,则 LDAP 需要查看“dc=imaginary,dc=lalala,dc=com”。 编辑以下条目以反映您选择的名称(您记得我们是“test.com”):
$servers->setValue('server','base',array('dc= test ,dc= com '));
下一个要修改的值将使用您刚刚在上一个条目中设置的域组件。 在以下条目中的“cn=admin”之后添加这些:
$servers->setValue('login','bind_id','cn=admin,dc= test ,dc= com ');
搜索以下有关“hide_template_warning”属性的部分。 我们想取消注释这一行并将值设置为“true”以避免一些不重要的恼人警告。
$config->custom->appearance['hide_template_warning'] = true ;
保存并关闭文件。
登录网页界面
您可以通过访问您的域名或 IP 地址,然后在您的网络浏览器中访问“/phpldapadmin”:
domain_name_or_IP_address /phpldapadmin
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/phpldap_initial.png ” alt =“PHPldapadmin 初始屏幕” />
点击左侧的“登录”链接。
您将收到登录提示。 如果您正确配置了 PHPldapadmin,则应预先填充正确的登录 DN(可分辨名称)。 在我们的例子中,这将是“cn=admin,dc=test,dc=com”。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/phpldap_login.png ” alt =“PHPldapadmin 登录” />
输入您在我们的 slapd 配置过程中选择的密码。
最初,您将看到一个相当稀疏的界面。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/phpldap_logged_in.png ” alt =“PHPldapadmin 登录” />
如果您单击域组件 (dc=test,dc=com) 旁边的“加号”,您将看到我们正在使用的管理员登录。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/phpldap_admin_entry.png ” alt =“PHPldapadmin 管理员入口” />
添加组织单位、组和用户
LDAP 非常灵活。 您可以通过多种不同的方式创建层次结构和关系,具体取决于您需要访问的信息类型以及您拥有的用例类型。
我们将为我们的信息创建一些基本结构,然后用信息填充它。
创建组织单位
首先,我们将创建一些信息类别,我们将在其中放置稍后的信息。 因为这是一个基本设置,我们只需要两个类别:组和用户。
单击左侧的“在此处创建新条目”链接。
在这里,我们可以看到我们可以创建的不同类型的条目。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/object_selection.png ” alt =“LDAP 对象选择” />
因为我们仅将其用作组织结构,而不是信息量大的条目,所以我们将使用“通用:组织单元”模板。
我们将被要求为我们的组织单位创建一个名称。 键入“组”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/groups_name.png ” alt =“LDAP 组名称” />
然后我们需要提交更改。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/commit_ou.png ” alt =“LDAP 提交 ou” />
完成后,我们可以在左侧看到一个新条目。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/ou_groups.png ” alt =“LDAP ou 组” />
我们将创建一个更多的组织结构来让自己继续前进。 重复该过程,但这次使用名称“users”。
完成后,您应该有如下所示的内容:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/ou_complete.png ” alt =“LDAP 完成” />
创建组
我们将创建三个不同的组,可用于根据用户所需的权限将用户组织到不同的“访问”组中。
我们将创建一个“admin”组、一个“irc”组和一个“user”组。 如果我们设置客户端 LDAP 身份验证,我们就可以允许不同组的成员进行身份验证。
我们希望在“组”组织单元内创建组。 单击我们创建的“组”类别。 在主窗格中,单击组类别中的“创建子条目”。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/child_groups.png ” alt =“组的 LDAP 子级” />
这一次,我们将选择“Generic: Posix Group”类别。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/posix_group.png ” alt =“LDAP posix 组” />
填写“admin”作为组名。 单击“创建对象”,然后在下一页确认。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/admin_group.png ” alt =“LDAP 管理员组” />
重复该过程,但只需将“admin”名称替换为“irc”和“user”。 请务必在创建子条目之前重新单击“ou=groups”条目,否则您可能会在错误的类别下创建条目。
您现在应该在左侧面板中有三个组:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/three_groups.png ” alt =“LDAP 三组” />
通过单击该条目,然后单击“查看 3 个子项”,您可以查看“ou=groups”类别中条目的概述:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/view_three_children.png ” alt =“LDAP 查看三个孩子” />
创建用户
接下来,我们将创建用户以放入这些组中。 首先单击“ou=users”类别。 单击“创建子条目”。
我们将为这些条目选择“通用:用户帐户”。
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/user_account.png ” alt =“LDAP 用户帐户” />
我们会得到很多字段来填写:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/user_fields.png ” alt =“LDAP 用户字段” />
使用对您的用户有意义的信息填写所有条目。
需要记住的是,“通用名称”对于类别中的每个条目都必须是唯一的。 因此,您可能希望使用用户名格式,而不是自动填充的默认“FirstName LastName”。
单击底部的“创建对象”并在下一页确认。
为了创建更多用户,我们将利用复制条目的能力。
单击您刚刚在左侧面板中创建的用户。 在主窗格中,单击“复制或移动此条目”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/copy_entry.png ” alt =“LDAP 复制用户条目” />
调整条目的“cn=user”部分,使其指向您希望用于新条目的通用名称。 点击底部的“复制”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/copy_common_name.png ” alt =“LDAP 复制公用名” />
您将看到填充了您的第一个用户数据的下一页。 您需要对其进行调整以匹配新用户信息。
一定要调整uidNumber。 单击底部的“创建对象”按钮。
将用户添加到组
我们可以通过单击相关组将用户添加到各个组。 在主窗格中,选择“添加新属性”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/add_new_attr.png ” alt =“LDAP 添加新属性” />
从下拉菜单中选择“memberUid”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/memberuid_entry.png ” alt =“LDAP memberuid 条目菜单” />
在填充的文本字段中,输入您要添加的第一个用户。 点击底部的“更新对象”:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/add_user2.png ” alt =“LDAP 添加用户 2” />
然后,您可以通过单击“修改组成员”并从可用选项中选择它们来添加更多成员:
[[File:“%3Ca]] https://assets.digitalocean.com/articles/ldap_basics/user_choices.png ” alt =“LDAP 用户选择” />
结论
您现在应该已经设置了一个包含一些用户和组的基本 LDAP 服务器。 您可以扩展此信息并添加所有不同的组织结构来复制您的业务结构。
我们将在另一部分 中介绍如何使用 LDAP 凭据 对各种服务进行身份验证。