安装和配置 Linux LDAP 服务器

2023-10-19

两天前,一位网站访问者在网站上搜索 LDAP,但没有找到任何结果,这促使我发一篇有关 LDAP 服务器的帖子,因此我们填补了空白,将喜爱的内容带给访问者。

 

 

什么是LDAP?

我们知道Linux将注册用户保存在/etc/passwd文件中,因此如果要访问机器,则必须在该文件中拥有用户。

如果您使用一台或几台机器,那应该没问题,但如果您有数百台或可能数千台机器,以及如何维护用户管理任务(例如密码修改)或任何其他管理任务(例如有人离开工作而您)需要关闭他的帐户,你会去每台机器上这样做吗?

这可能是一场噩梦,或者您需要创建一个新帐户。在这种情况下,我们需要一个集中的用户帐户管理系统,一个数据库来保存与用户帐户相关的所有信息。

解决此问题最常用的解决方案是轻量级目录访问协议 (LDAP)。

LDAP 使用通常的客户端/服务器范例。

 

LDAP 的用途

LDAP 不仅保留用户列表,而且您还可以将其用作文件的存储。

正如我们上面提到的,您可以使用它来验证用户身份。另外,您还可以存储DNS记录在 LDAP 服务器中。

LDAP 的另一种用途是,您可以将其用作组织的黄页目录服务,以提供有关用户或员工、部门、联系信息、电话号码、地址、私人数据或其他信息的信息。

 

LDAP 服务器实施

LDAP 是一个开放标准协议,许多公司都实现了该协议。

LDAP 有一些商业实现,例如:

  • 微软活动目录。
  • Oracle 互联网目录。
  • Oracle 统一目录。
  • IBM 安全目录服务器。
  • UnboundID 目录服务器。
  • NetIQ eDirectory 或 eDirectory。
  • CA 目录或 CA eTrust 目录。

以及免费的开源实现,例如:

  • OpenLDAP。
  • ForgeRock OpenDJ。
  • 阿帕奇 DS。
  • 389 目录服务器。

在这篇文章中,我们将使用 OpenLDAP,它非常常见并受到社区的喜爱。

OpenLDAP 是在 Linux/UNIX 系统上运行的 LDAP 的开源实现。

 

安装 OpenLDAP

要安装 OpenLDAP,您必须安装 openldap、openldap-servers 和 openldap-clients 软件包。


$ yum -y install openldap openldap-servers openldap-clients  

或者,如果您使用的是 CentOS 7,则可以使用 dnf 或 Dandified Yum。


$ dnf -y install openldap openldap-servers openldap-clients  

如果您使用的是基于 Debian 的系统(例如 Ubuntu),您可以这样安装:


$ sudo apt-get install slapd

$ sudo apt-get install ldap-utils  

然后我们可以让服务在启动时自动运行:


$ systemctl enable slapd  

 

配置 LDAP

安装成功后,需要使用 ldappasswd 命令为 admin 用户设置密码:


$ ldappasswd  

OpenLDAP 的配置文件位于 /etc/openldap/slapd.d 目录中。

您可以直接修改这些文件或使用 ldapmodify 命令。强烈建议使用 ldapmodify 命令修改 OpenLDAP。

 

LDAP 术语

如果我们要处理 LDAP 协议,则需要了解一些术语,因为我们会经常使用它们。

Entry(或对象):LDAP 中的每个单元都被视为一个条目。

dn: 条目名称。

o: 机构名称。

dc:域组件。例如,您可以像这样编写 likegeeks.com dc=likegeeks,dc=com。

cn:通用名称,如人名或某个物体的名称。

 

修改条目

OpenLDAP 将其信息存储在 bdb 或 hdb 文件中。您可以在以下位置找到 hdb 文件:


/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif  

file.

要标识元素,请使用 dn(可分辨名称)属性。因此 LDIF 文件中的第一行将是:

dn: olcDatabase={2}hdb,cn=config

然后我们指定是要添加还是修改

变更类型:修改

我们还必须澄清是否要替换它或删除它

替换:olc后缀

最后,我们输入更改后的属性的新值。

olc后缀:dc=likegeeks,dc=local

回到我们的文件。像这样更改以下条目:

olc后缀:dc=我的域名,dc=com

olcRootDN:cn=经理,dc=我的域,dc=com

所以我们的 LDIF 文件将是这样的:


dn: olcDatabase={2}hdb,cn=config
changeType: modify
replace: olcSuffix
olcSuffix: dc=likegeeks,dc=local
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=local  

在我们的文件中


/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif  

文件。 dn 属性为 dn:

olcDatabase={2}hdb,并且由于该文件位于 config 文件夹内,因此完整的 dn 属性为 dn:

olcDatabase={2}hdb,cn=config

然后我们保存文件并使用 ldapmodify:


$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif  

您可以使用 ldapsearch 命令来检查更改:


$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*  

是的,数据已经改变。

此外,您还可以使用 slaptest 命令来检查配置。


$ slaptest -u  

 

添加条目

要添加条目,请使用 ldapadd 命令。

首先,我们创建 ldif 文件:


dn: dc=likegeeks,dc=local
objectClass: dcObject
objectClass: organization
dc: likegeeks
o: likegeeks  

我们指定一系列属性,例如域组件 (dc)、专有名称 (dn) 和组织 (o)。

根据我们要创建的对象的类型(在本例中为 dcObject),某些属性是必需的,其他属性是可选的。

您根据您的系统检查架构。

在 CentOS 6 上,您可以访问


/etc/openldap/slapd.d/cn=config/cn=schema  

在 CentOS 7 上,您可以访问


/etc/openldap/schema  

或者你可以使用grep 命令从您的系统获取 .schema 文件。

我们示例中的对象组织位于


core.schema  

CentOS 7 上的文件。

正如我们所看到的,唯一必需的属性是 o,即组织。

现在我们可以使用 ldapadd 命令来添加我们的对象:


$ ldapadd -f myobj.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass  

我们使用 -f 指定文件名,使用 -D 指定管理员用户,使用 -w 指定密码。

要搜索条目,您可以使用 ldapsearch 命令:


$ ldapsearch -x -b dc=likegeeks,dc=local  

 

添加组织部门

您可以添加组织单位 (ou)。首先,创建一个新的 LDIF 文件。我们将其命名为 users.ldif,然后输入:


dn: ou=users,dc=likegeeks,dc=local
objectClass: organizationalUnit
ou: users  

然后我们使用ldapadd来添加单元:


$ ldapadd -f users.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass  

该组织单位拥有所有 LDAP 用户。

 

添加用户

我们可以将用户添加到新创建的组织部门。

首先,我们创建 ldif 文件:


dn: cn=adam,ou=users,dc=likegeeks,dc=local
cn: adam
sn: USA
objectClass: myorg
userPassword: mypass
uid: adam  

然后使用 ldapadd 命令添加用户:


$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local 2 -w mypass  

 

添加组

另外,我们首先创建 ldif 文件:


dn: cn=developers,ou=users,dc=likegeeks,dc=local
cn: developers
objectClass: groupOfNames
member: cn=adam,ou=users,dc=likegeeks,dc=local  

然后运行 ​​ldapadd 添加组:


$ ldapadd -f groups.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass  

 

删除条目

删除条目非常简单,只需使用 ldapdelete 命令和你想要的 cn 即可:


$ ldapdelete "cn=adam,ou=users,dc=likegeeks,dc=local" -D cn=admin,dc=likegeeks,dc=local -w mypass  

您可以使用 ldapsearch 检查该条目是否已删除:


$ ldapsearch -x -b "dc=likegeeks,dc=local"  

 

LDAP端口

LDAP 端口为 389,如果您使用 TLS 保护 LDAP,则端口将为 636。

您可以使用 netstat 命令确保 OpenLDAP 正在运行哪个端口。


$ netstat -ntlp | grep slapd  

 

使用 LDAP 验证用户身份

默认情况下,Linux 进行身份验证users使用 /etc/passwd 文件。现在我们将了解如何使用 OpenLDAP 对用户进行身份验证。

确保您的系统允许 OpenLDAP 端口(389、636)。

如果您使用 iptables 防火墙,我建议您查看 iptables 帖子以了解这些命令Linux iptables 防火墙.


$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=likegeeks,dc=local" --enableldaptls --update  

现在证书位于 /etc/openldap/cacerts 中。

当我们创建用户时,您必须定义一些所需的字段。

如果你想创建一个用户 adam,你将创建 adam.ldif 文件并写入以下内容:


dn: uid=adam,ou=users,dc=likegeeks,dc=local
uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: mypass
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam  

如果您使用的是 CentOS 7,您应该使用 slappasswd 命令对密码进行加密,然后再将其放入 LDIF 文件中,如下所示:


$ slappasswd  

然后我们将加密后的密码复制到ldif文件中,因此该文件将如下所示:


uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: {SSHA}sathXSo3XTWrbi20Fp+MsqJHjXkHGhT/
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam  

现在我们可以使用 ldapadd 来添加用户:


$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass  

 

使用 LDAP Web 界面 (phpldapadmin)

对于初学者来说,从终端工作可能有点棘手。不过,有一个名为 phpldapadmin 的基于 Web 的工具,它是用 PHP 编写的,用于简化 OpenLDAP 的使用。

你可以像这样安装它:


$ yum -y install phpldapadmin  

上面的命令将安装 Apache Web 服务器,因此您不需要安装它。

现在您需要配置 phpldapadmin。

编辑这个文件:


/etc/phpldapadmin/config.php  

并更改这一行:


$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');  

如果你想使用 likegeeks.local 作为域名,你应该这样写:


$servers->setValue('server','base',array('dc=likegeeks,dc=local'));  

另外,您需要像这样更改bind_id行:


$servers->setValue('login','bind_id','cn=admin,dc= likegeeks,dc=local');  

并且不要忘记输入您的 apache 别名:


<IfModule mod_alias.c>
    Alias /ldap /usr/share/phpldapadmin/htdocs
</IfModule>  

现在您可以像这样访问 phpldapadmin:

http://服务器域名或IP/ldap

在我的示例中,我将使用:

http://likegees.local/ldap

在登录 DN 字段中,您将使用如下内容:


cn=admin,dc=likegeeks,dc=local  

您可以执行我们在此 Web 界面中所做的所有操作,添加用户、组织和组。

我希望您发现本教程有用且简单。我们无法在一篇文章中涵盖 LDAP 服务器的所有用途,但这是对 LDAP 协议及其使用方法的简要介绍。

谢谢。

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

安装和配置 Linux LDAP 服务器 的相关文章

  • 如何在 PHP 中向数组追加项目

    问题 如何在 PHP 中向数组追加项目 如何在 PHP 中将任何元素追加到现有数组的末尾 如何在 PHP 中将元素推送到数组 本教程使用数组推 函数将新元素插入或追加到数组末尾 PHP 将元素追加到数组 以下示例创建一个包含两个元素 如 b
  • 如何在 Ubuntu 18.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中

随机推荐

  • 如何在 CentOS 7 上安装 Python 3

    本教程将指导您使用 Software Collections SCL 以及发行版默认 Python 版本 2 7 在 CentOS 7 系统上安装 Python 3 我们还将向您展示如何创建 Python 虚拟环境 Python 是世界上最
  • 如何在 Debian 10 Linux 上安装 Vagrant

    Vagrant是一个用于构建和管理虚拟机环境的开源命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 之上配置计算机 和码头工人 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 V
  • Linux 中的 Wget 命令及示例

    GNU Wget 是一个用于从网络下载文件的命令行实用程序 使用 Wget 您可以使用 HTTP HTTPS 和 FTP 协议下载文件 Wget 提供了许多选项 允许您下载多个文件 恢复下载 限制带宽 递归下载 后台下载 镜像网站等等 本文
  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环
  • 如何在 Debian 9 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 本教程提供了在 Debian 9 系统上安装 Compos
  • 如何列出 CentOS 上已安装的软件包

    在本教程中 我们将向您展示如何列出和过滤 CentOS 上已安装的软件包 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出 CentOS 系统上已安装的软件包会很有帮助 我们还将向您展示如何检查是否安装了特定的软件
  • 如何检查您的 CentOS 版本

    当您第一次登录 CentOS 计算机时 在进行任何工作之前 您可能需要检查系统上运行的 CentOS 版本 在本教程中 我们将展示几个不同的命令 了解如何检查系统上安装的 CentOS 版本 截至撰写本文时 CentOS Linux 拥有三
  • 如何在 CentOS 8 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 CentOS 时 不存在交换分区 因此唯
  • 配置 Magento 2 在 CentOS 7 上使用 Varnish

    页面速度或加载时间对于在线商店的成功至关重要 加载时间是加载特定页面上的内容所需的总时间 加载时间越长 转化率越低 这也是谷歌考虑确定搜索引擎排名的最重要因素之一 在第一篇文章中 我们在 CentOS 7 机器上安装了 Magento 2
  • 自动启动 wampserver 在 Windows 10 上自动启动

    在向您展示如何自动启动 wampserver 之前 我先简单介绍一下 Wampserver 是 Windows 平台上最好的 Web 开发堆栈之一 与 xampp 相比 我更喜欢它 因为它有方便的托盘菜单 可以让我访问任何配置 您可以从此网
  • 使用 Sed 命令删除行:Linux 文本删除教程

    Using sed命令从文件或流中删除行是常见操作 使用删除行的基本语法sed如下 sed pattern to match d filename Here pattern to match是您要在文件的每一行中匹配的模式 如果一行包含指定
  • 使用 to_sql 将 Python Pandas DataFrame 导出到 SQL

    The to sql函数允许您将存储在 DataFrame 中的记录写入 SQL 数据库 通过使用 SQLAlchemy 可以使用该库支持的任何数据库 在接下来的部分中 我们将更深入地研究此功能并探索更多功能 目录 hide 1 基本语法和
  • Python NumPy arange() 教程

    NumPyarange 函数用于生成给定区间内的值序列 您可以将其视为数字范围生成器 它允许您创建一个 NumPy 数组 其值在指定范围内均匀分布 它提供了更多功能 例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性 在本教程中
  • Python 切片初学者指南

    在本教程中 您将了解切片在 Python 中的工作原理以及如何使用它来操作字符串 列表和元组等序列 我们还将演示 Python 切片对象如何创建可用于对序列进行切片的切片 这些知识将为您提供一个强大的工具来访问序列中的多个项目 以删除多个项
  • Python 中非常规颜色指南

    如果您一直在使用 Python 进行编程 那么您很可能至少遇到过一个提供处理颜色表示和自定义功能的库 From 图像处理从数据可视化到Web应用程序开发 你会发现颜色的使用无处不在 事实上 大多数用于最先进计算机视觉任务的现代深度神经网络都
  • 在 Pandas 中使用 loc 和 MultiIndex DataFrame

    在之前的教程中 我们讨论了locproperty 一种基于标签的数据选择方法 但是您是否知道在使用 loc 处理多级索引时可以优化您的选择 本教程将揭示在 Pandas 中使用 loc 和 MultiIndex DataFrame 的强大功
  • Python图像处理教程(使用OpenCV)

    在本教程中 您将学习如何使用 OpenCV 库在 Python 中处理图像 OpenCV 是一个用于实时图像处理的免费开源库 它用于处理图像 视频甚至直播 但在本教程中 我们将仅将处理图像作为第一步 在开始之前 我们先安装 OpenCV 目
  • 安装和配置 Linux LDAP 服务器

    两天前 一位网站访问者在网站上搜索 LDAP 但没有找到任何结果 这促使我发一篇有关 LDAP 服务器的帖子 因此我们填补了空白 将喜爱的内容带给访问者 目录 hide 1 什么是LDAP 2 LDAP 的用途 3 LDAP 服务器实施