Mac上安装OpenLDAP服务器详细教程(Homebrew安装和自带的ldap)

目录

前言

[一、安装 Homebrew(如果尚未安装)](#一、安装 Homebrew(如果尚未安装))

[二、使用 Homebrew 安装 OpenLDAP](#二、使用 Homebrew 安装 OpenLDAP)

[三、配置 OpenLDAP](#三、配置 OpenLDAP)

步骤一:更新PATH和环境变量

步骤二:配置slapd.conf

[步骤三:初始化和启动 OpenLDAP 服务](#步骤三:初始化和启动 OpenLDAP 服务)

1.创建数据库目录

2.设置权限

3.配置数据库文件

步骤三:slapd.d配置目录

1.使用slaptest生成配置

2.报错1:数据库目录缺失

3.报错2:数据库文件缺失

[4.报错3: slapd.d 目录不为空](#4.报错3: slapd.d 目录不为空)

步骤四:启动slapd

步骤五:验证LDAP服务

步骤六:创建LaunchAgent(可选)

其他:更换ldif文件

1.重建testldap.ldif

[2.加载 LDIF 文件](#2.加载 LDIF 文件)

[3.确认 LDAP 条目存在](#3.确认 LDAP 条目存在)

四、MAC自带版本和Homebrew安装版本的说明

1.macOS自带的OpenLDAP

2.Homebrew安装的OpenLDAP

五、macOS自带的OpenLDAP。

步骤一:确认OpenLDAP安装位置

步骤二:编辑配置文件

步骤三:创建数据目录

步骤四:生成slapd.d配置目录

步骤五:启动slapd

步骤六:验证LDAP服务

自动启动配置(可选)

[六、macOS自带的OpenLDAP 和 homebrew 安装的区别](#六、macOS自带的OpenLDAP 和 homebrew 安装的区别)

[1. 安装位置](#1. 安装位置)

[2. 配置文件路径](#2. 配置文件路径)

[3. 版本管理](#3. 版本管理)

[4. 更新和安装方式](#4. 更新和安装方式)

[5. 启动和管理服务](#5. 启动和管理服务)

选择哪一个?

结论


目录

前言

[一、安装 Homebrew(如果尚未安装)](#一、安装 Homebrew(如果尚未安装))

[二、使用 Homebrew 安装 OpenLDAP](#二、使用 Homebrew 安装 OpenLDAP)

[三、配置 OpenLDAP](#三、配置 OpenLDAP)

步骤一:更新PATH和环境变量

步骤二:配置slapd.conf

[步骤三:初始化和启动 OpenLDAP 服务](#步骤三:初始化和启动 OpenLDAP 服务)

1.创建数据库目录

2.设置权限

3.配置数据库文件

步骤三:slapd.d配置目录

1.使用slaptest生成配置

2.报错1:数据库目录缺失

3.报错2:数据库文件缺失

[4.报错3: slapd.d 目录不为空](#4.报错3: slapd.d 目录不为空)

步骤四:启动slapd

步骤五:验证LDAP服务

步骤六:创建LaunchAgent(可选)

四、MAC自带版本和Homebrew安装版本的说明

1.macOS自带的OpenLDAP

2.Homebrew安装的OpenLDAP

五、macOS自带的OpenLDAP。

步骤一:确认OpenLDAP安装位置

步骤二:编辑配置文件

步骤三:创建数据目录

步骤四:生成slapd.d配置目录

步骤五:启动slapd

步骤六:验证LDAP服务

自动启动配置(可选)

[六、macOS自带的OpenLDAP 和 homebrew 安装的区别](#六、macOS自带的OpenLDAP 和 homebrew 安装的区别)

[1. 安装位置](#1. 安装位置)

[2. 配置文件路径](#2. 配置文件路径)

[3. 版本管理](#3. 版本管理)

[4. 更新和安装方式](#4. 更新和安装方式)

[5. 启动和管理服务](#5. 启动和管理服务)

选择哪一个?

结论


前言

在macOS上安装LDAP服务器,最常用的选择是OpenLDAP。下面是如何使用Homebrew来安装OpenLDAP的步骤:

注意 :以下命令和过程适用于基于Homebrew的安装方式,如果您使用的是Mac with Apple Silicon (M1, M2等),请注意路径可能略有不同(通常为/opt/homebrew而非/usr/local)。

本文以M2举例(MAC有自带的OpenLDAP,后面有比较两个安装版本)

一、安装 Homebrew(如果尚未安装)

如果尚未安装Homebrew,在终端中运行以下命令进行安装:

bash 复制代码
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

此脚本会安装Homebrew及其依赖项。

二、使用 Homebrew 安装 OpenLDAP

1、更新Homebrew以确保您安装的是最新版的软件:

bash 复制代码
brew update

2、安装OpenLDAP:

bash 复制代码
brew install openldap

三、配置 OpenLDAP

OpenLDAP 的配置文件通常位于 /etc/openldap/ 或 /usr/local/etc/openldap/ (根据您的系统和OpenLDAP版本,路径可能有所不同)。可以查看Homebrew安装信息来确认实际路径:

bash 复制代码
brew info openldap

MAC M2是以下路径。都在/opt/homebrew/下:

  • /opt/homebrew/opt/openldap/bin/:可执行文件
  • /opt/homebrew/``opt/openldap/sbin/:系统管理的可执行文件
  • /opt/homebrew/opt/openldap/lib/:库文件
  • /opt/homebrew/opt/openldap/libexe/:启动脚本 slapd文件
  • /opt/homebrew/etc/openldap/:配置文件 slapd.d 、slapd.conf 、slapd.ldif都在这里

/opt/homebrew/etc/openldap

/opt/homebrew/opt/openldap/libexec

只有slapd文件

步骤一:更新PATH和环境变量

按照Homebrew的提示,更新你的环境变量以确保系统使用Homebrew安装的OpenLDAP版本。

根据提示设置环境变量:

bash 复制代码
echo 'export PATH="/opt/homebrew/opt/openldap/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/openldap/sbin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/openldap/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openldap/include"' >> ~/.zshrc
source ~/.zshrc

我这里只配置了PATH两个。

步骤二:配置slapd.conf

配置slapd.conf文件

在/opt/homebrew/etc/openldap目录下(安装后会有默认生成的一些文件,我做了备份,重新创建了文件):

在/opt/homebrew/etc/openldap目录中创建并编辑slapd.conf文件(也可以使用vi vim都等编辑):

bash 复制代码
sudo nano /opt/homebrew/etc/openldap/slapd.conf

示例slapd.conf内容:

bash 复制代码
include /opt/homebrew/etc/openldap/schema/core.schema
pidfile /opt/homebrew/var/run/slapd.pid
argsfile /opt/homebrew/var/run/slapd.args

database mdb
maxsize 1073741824
suffix "dc=testldap,dc=com"
rootdn "cn=admin,dc=testldap,dc=com"
rootpw secret
#数据库文件目录
directory /opt/homebrew/var/openldap-data
index objectClass eq
  • 修改suffix和rootdn以匹配你的域名。
  • 修改rootpw为你的管理员密码

步骤三:初始化和启动 OpenLDAP 服务

要初始化LDAP目录,您首先需要创建一个LDIF文件,该文件定义了您的LDAP树和它的顶级条目(比如域名)。然后使用ldapadd命令将其添加到数据库中。

默认情况下,OpenLDAP 不会随系统自动启动。可以手动启动 slapd,以便测试配置是否有效:

1.创建数据库目录

目录: /opt/homebrew/var/openldap-data

如果 directory /opt/homebrew/var/openldap-data 中指定的目录不存在,你需要手动创建它:

bash 复制代码
sudo mkdir -p /opt/homebrew/var/openldap-data

这条命令会创建一个名为 openldap-data 的目录,位于 /opt/homebrew/var/ 下。确保目录创建成功,并且具有适当的权限以供 OpenLDAP 使用。

2.设置权限

bash 复制代码
sudo chown -R ldap:ldap /opt/homebrew/var/openldap-data



如果提示:

chown: ldap: illegal group name



说明 ldap 组不存在,你可以尝试使用其他合适的组,例如 staff。staff 组通常存在于 macOS 系统中,并且用于一般的用户权限。以下是将数据库目录设置为 staff 组的命令:


sudo chown -R :staff /opt/homebrew/var/openldap-data

3.配置数据库文件

要生成数据库文件,你需要运行 OpenLDAP 的 slapadd 工具,并提供一个 LDIF 文件来填充数据库。以下是生成数据库文件的基本步骤:

1)创建 LDIF 文件:

首先,你需要创建一个 LDIF 文件,用于定义你的 LDAP 数据。这个文件包含了条目(entry)和属性(attribute)的定义。这是一个示例 LDIF 文件的简单例子:

在目录/opt/homebrew/var/openldap-data下创建testldap.ldif文件(可以使用 vi vim编辑器)

bash 复制代码
# LDIF 文件示例

# 定义根节点
dn: dc=testldap,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Organization
dc: testldap

# 定义管理员条目
dn: cn=admin,dc=testldap,dc=com
objectClass: organizationalRole
cn: admin

2)运行 slapadd:

使用 slapadd 工具将 LDIF 文件加载到数据库中。运行以下命令:

bash 复制代码
sudo slapadd -F /opt/homebrew/etc/openldap/slapd.d -l your_ldif_file.ldif

例如:
sudo slapadd -F /opt/homebrew/etc/openldap/slapd.d -l /opt/homebrew/var/openldap-data/testldap.ldif

替换 your_ldif_file.ldif 为你的 LDIF 文件的路径和名称。

-F 选项指定了 slapd.d 配置目录的路径,这样 slapadd 将把数据加载到正确的位置。

加载后openldap-data文件下会生成如下文件:

步骤三:slapd.d配置目录

1.使用slaptest生成配置

bash 复制代码
sudo slaptest -f /opt/homebrew/etc/openldap/slapd.conf -F /opt/homebrew/etc/openldap/slapd.d

如果没有错误,上述命令会将配置文件转换为新的格式并存储在/opt/homebrew/etc/openldap/slapd.d目录中。

2.报错1:数据库目录缺失

/opt/homebrew/etc/openldap/slapd.conf: line 10: invalid path: No such file or directory

第10行这个目录不存在:

3.报错2:数据库文件缺失

mdb_db_open: database "dc=testldap,dc=com" cannot be opened: No such file or directory (2). Restore from backup!

backend_startup_one (type=mdb, suffix="dc=testldap,dc=com"): bi_db_open failed! (2)

slap_startup failed (test would succeed using the -u switch)

4.报错3: slapd.d 目录不为空

slaptest如果报以下错误:

config_setup_ldif: expected directory /opt/homebrew/etc/openldap/slapd.d to be empty! slaptest: bad configuration directory!

错误消息表明 slapd.d 目录不是空的,但 slaptest 需要该目录为空才能正常工作。这可能是由于之前运行 slaptest 或其他操作导致 slapd.d 目录中存在了一些文件。

  1. 清空 slapd.d 目录:

    首先,确保 slapd.d 目录为空。你可以手动删除其中的文件:

    bash 复制代码
    sudo rm -rf /opt/homebrew/etc/openldap/slapd.d/*

    运行完这个命令后,确保 slapd.d 目录为空。

  2. 重新运行 slaptest:

    确保 slapd.d 目录为空后,重新运行 slaptest 命令:

    bash 复制代码
    sudo slaptest -f /opt/homebrew/etc/openldap/slapd.conf -F /opt/homebrew/etc/openldap/slapd.d

    如果一切设置正确,slaptest 应该能够成功创建配置目录。

步骤四:启动slapd

启动slapd守护进程

确认slapd存在位置:/opt/homebrew/opt/openldap/libexec/slapd

bash 复制代码
 sudo /opt/homebrew/opt/openldap/libexec/slapd -F /opt/homebrew/etc/openldap/slapd.d -d 1

使用-d 1参数以调试模式启动,可以看到详细的日志输出。这有助于排查启动问题。

步骤五:验证LDAP服务

使用ldapsearch验证服务

bash 复制代码
ldapsearch -x -H ldap://localhost:389 -b "dc=testldap,dc=com"

连接成功,如下图:

步骤六:创建LaunchAgent(可选)

如果希望OpenLDAP随系统启动,可以创建一个LaunchAgent。

创建LaunchAgent文件

创建文件~/Library/LaunchAgents/homebrew.mxcl.openldap.plist,内容如下:

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>homebrew.mxcl.openldap</string> <key>ProgramArguments</key> <array> <string>/opt/homebrew/opt/openldap/libexec/slapd</string> <string>-F</string> <string>/opt/homebrew/etc/openldap/slapd.d</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>StandardErrorPath</key> <string>/opt/homebrew/var/log/slapd.log</string> <key>StandardOutPath</key> <string>/opt/homebrew/var/log/slapd.log</string> </dict> </plist>

加载LaunchAgent

bash 复制代码
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.openldap.plist launchctl start homebrew.mxcl.openldap

其他:更换ldif文件

如果想创建一个包含 uid=admin 的 LDIF 文件,并加载到 LDAP 服务器中。可以更换ldif文件,例如:

1.重建testldap.ldif

清空并重新创建 OpenLDAP 数据目录(确保数据目录为空):

bash 复制代码
sudo rm -rf /opt/homebrew/var/openldap-data/*

确保数据目录的权限正确:

bash 复制代码
sudo chown -R :staff /opt/homebrew/var/openldap-data

文件内容:

Groovy 复制代码
dn: dc=testldap,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: Test LDAP
dc: testldap

dn: cn=admin,dc=testldap,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: secret

dn: uid=admin,dc=testldap,dc=com
objectClass: inetOrgPerson
cn: Admin
sn: Admin
uid: admin
userPassword: secret

2.加载 LDIF 文件

使用 slapadd 命令加载这个 LDIF 文件:

bash 复制代码
sudo slapadd -F /opt/homebrew/etc/openldap/slapd.d -l /opt/homebrew/var/openldap-data/testldap.ldif

启动

bash 复制代码
 sudo /opt/homebrew/opt/openldap/libexec/slapd -F /opt/homebrew/etc/openldap/slapd.d -d 1

3.确认 LDAP 条目存在

再次使用 ldapsearch 命令确认条目存在:

bash 复制代码
ldapsearch -x -H ldap://localhost:389 -D "cn=admin,dc=testldap,dc=com" -W -b "dc=testldap,dc=com" "(uid=admin)"

确保这次搜索结果包含 uid=admin 条目。

四、MAC自带版本和Homebrew安装版本的说明

macOS自带了OpenLDAP,但其配置文件和安装位置与通过Homebrew安装的OpenLDAP可能有所不同。以下是对这两个安装版本的说明和如何处理的建议:

1.macOS自带的OpenLDAP

macOS自带的OpenLDAP相关文件通常位于 /etc/openldap 目录下。这个目录包含默认的配置文件和示例文件,例如:

  • AppleOpenLDAP.plist
  • ldap.conf
  • ldap.conf.default
  • schema/ 目录
  • slapd.conf.default
  • DB_CONFIG.example

2.Homebrew安装的OpenLDAP

通过Homebrew安装的OpenLDAP文件通常位于 /opt/homebrew/Cellar/openldap/ 目录下。这个目录下的内容一般包括:

  • bin/:可执行文件
  • sbin/:系统管理的可执行文件
  • lib/:库文件
  • etc/openldap/:配置文件

更新环境变量,为了使用Homebrew安装的OpenLDAP,需要确保Homebrew路径在系统的PATH中优先:

bash 复制代码
echo 'export PATH="/opt/homebrew/opt/openldap/bin:$PATH"' >> ~/.zshrc 
echo 'export PATH="/opt/homebrew/opt/openldap/sbin:$PATH"' >> ~/.zshrc 
source ~/.zshrc

五、macOS自带的OpenLDAP。

以下是如何配置和启动macOS自带的OpenLDAP服务的详细步骤。

步骤一:确认OpenLDAP安装位置

macOS自带的OpenLDAP通常位于/usr/libexec目录下,配置文件在/etc/openldap目录中。

步骤二:编辑配置文件

编辑slapd.conf文件

在/etc/openldap目录中找到并编辑slapd.conf文件:

bash 复制代码
sudo nano /etc/openldap/slapd.conf

示例slapd.conf内容:

bash 复制代码
include /etc/openldap/schema/core.schema
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
​
database mdb
maxsize 1073741824
suffix "dc=my-domain,dc=com"
rootdn "cn=admin,dc=my-domain,dc=com"
rootpw secret
directory /var/lib/openldap/openldap-data
index objectClass eq
  • 修改suffix和rootdn以匹配你的域名。

  • 修改rootpw为你的管理员密码。

步骤三:创建数据目录

确保数据目录存在并有正确的权限:

bash 复制代码
sudo mkdir -p /var/lib/openldap/openldap-data
sudo chown -R ldap:ldap /var/lib/openldap/openldap-data

步骤四:生成slapd.d配置目录

创建slapd.d目录

bash 复制代码
sudo mkdir -p /etc/openldap/slapd.d

使用slaptest生成配置

bash 复制代码
sudo slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

步骤五:启动slapd

启动slapd守护进程

bash 复制代码
sudo /usr/libexec/slapd -F /etc/openldap/slapd.d -d 1

使用-d 1参数以调试模式启动,可以看到详细的日志输出。这有助于排查启动问题。

步骤六:验证LDAP服务

使用ldapsearch验证服务

bash 复制代码
ldapsearch -x -H ldap://localhost:389 -b "dc=my-domain,dc=com"

自动启动配置(可选)

如果希望OpenLDAP随系统启动,可以创建一个LaunchDaemon。

1.创建LaunchDaemon文件

创建文件/Library/LaunchDaemons/org.openldap.slapd.plist,内容如下:

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.openldap.slapd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/libexec/slapd</string>
        <string>-F</string>
        <string>/etc/openldap/slapd.d</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/var/log/slapd.log</string>
    <key>StandardOutPath</key>
    <string>/var/log/slapd.log</string>
</dict>
</plist>

2.加载LaunchDaemon

bash 复制代码
sudo launchctl load /Library/LaunchDaemons/org.openldap.slapd.plist
sudo launchctl start org.openldap.slapd

六、macOS自带的OpenLDAP 和 homebrew 安装的区别

macOS自带的OpenLDAP和通过Homebrew安装的OpenLDAP之间有几个关键区别,包括安装位置、配置文件路径、版本管理和更新方式。这些区别可能会影响如何管理和使用OpenLDAP服务。以下是详细的比较:

1. 安装位置

  • macOS自带的OpenLDAP:

    • 可执行文件位于系统路径,例如 /usr/libexec/slapd。
    • 配置文件位于 /etc/openldap 目录。
    • 数据库文件通常位于 /var/db/openldap 或 /var/lib/openldap。
  • Homebrew安装的OpenLDAP:

    • 可执行文件和库文件位于 Homebrew 的安装路径,例如 /usr/local/opt/openldap 或 /opt/homebrew/opt/openldap(在Apple Silicon Mac上)。
    • 配置文件位于 Homebrew 的专用路径,如 /usr/local/etc/openldap 或 /opt/homebrew/etc/openldap。
    • 数据库文件路径通常在 Homebrew 安装目录下。

2. 配置文件路径

  • macOS自带的OpenLDAP:

    • 配置文件位于 /etc/openldap,包括 slapd.conf 和 ldap.conf 等。
    • 默认配置文件路径由系统管理,更新和修改需要使用系统管理权限。
  • Homebrew安装的OpenLDAP:

    • 配置文件位于 /usr/local/etc/openldap 或 /opt/homebrew/etc/openldap。
    • 配置文件更易于用户管理和修改,适合开发和实验环境。

3. 版本管理

  • macOS自带的OpenLDAP:

    • 由操作系统提供和维护,随系统更新。
    • 更新频率取决于操作系统的更新周期。
    • 版本可能较旧,不一定包含最新的特性和安全修复。
  • Homebrew安装的OpenLDAP:

    • 由Homebrew社区维护和更新。
    • 更新频率更快,容易获得最新版本和修复。
    • 用户可以通过Homebrew命令轻松更新到最新版本。

4. 更新和安装方式

  • macOS自带的OpenLDAP:

    • 通过系统更新进行升级,用户不需要手动干预。
    • 版本更新频率取决于操作系统更新。
  • Homebrew安装的OpenLDAP:

    • 通过Homebrew命令进行安装和更新,例如 brew install openldap 和 brew upgrade openldap。
    • 用户可以控制版本更新,适合需要使用特定版本的用户。

5. 启动和管理服务

  • macOS自带的OpenLDAP:

    • 通常不默认启动,需要手动配置和启动。
    • 可以使用 macOS 的 launchd 服务进行管理。
  • Homebrew安装的OpenLDAP:

    • 用户可以创建和管理自定义的 LaunchAgent 或 LaunchDaemon 来启动和管理服务。
    • 更适合在开发环境中进行测试和实验。

选择哪一个?

  • 使用macOS自带的OpenLDAP:

    • 如果你只需要一个简单的、快速配置的LDAP服务,并且不需要最新的功能和修复。
    • 如果你希望最小化依赖并使用系统自带的工具。
  • 使用Homebrew安装的OpenLDAP:

    • 如果你需要最新版本和快速更新。
    • 如果你希望在配置和路径上有更多的灵活性。
    • 如果你需要在开发环境中进行大量的测试和实验,并希望避免对系统文件进行修改。

结论

根据你的需求选择适合的版本。如果你需要最新的功能和更灵活的配置管理,建议使用Homebrew安装的OpenLDAP;如果你只需要一个简单、稳定的LDAP服务,可以使用macOS自带的OpenLDAP。

相关推荐
l1t11 分钟前
修改两处,让SQLite求解数独SQL在datafusion上运行
服务器·数据库·sql
IT大白鼠40 分钟前
AI SSH 运维助手 V13.0内部版七项私有新特性全解
运维·人工智能·ssh
天蓝蓝的本我1 小时前
ollama外部无法访问.ollama.service 文件无法写入.ollama外部无法访问.
运维·网络
帷幕落秋1 小时前
经典命令场景与软硬链接
linux·运维
老牛日常随笔1 小时前
Meta 开源 8160 亿参数模型,官方给的方案是两台 Mac Studio
macos·开源
派小心.1 小时前
DAU和MAU怎么计算?先确定活跃事件、用户键和统计窗口
大数据·服务器·前端·人工智能·数据分析
data analyse 4562 小时前
Session数怎么计算?明确会话切分、超时与跨页规则
java·服务器·数据库
先知后行。2 小时前
各种文件系统
linux·服务器·数据库
Sayai3 小时前
Java 进程 Unable to create new native thread 排查实战:Linux 线程数五层限制与 JVM -Xss 调优
java·linux·运维·jvm·性能优化