Fusion Directory 1.5 常用 CLI 命令与工具详解
讲解 Fusion Directory 1.5 五个 CLI 工具与 LDAP 命令的真实用法,交付条目 CRUD 可见性与备份恢复端到端实测闭环。
Fusion Directory 1.5 常用 CLI 命令与工具详解
目标:系统性讲解 Fusion Directory 1.5 自带的 5 个 CLI 管理工具与配套 LDAP 命令的用法、参数与真实回显,并交付一条"条目 CRUD → 界面可见 → 备份 → 删除 → 恢复"的端到端实测闭环。全部命令与回显均在 Debian 11.11 + OpenLDAP 2.4.57 + Fusion Directory 1.5-1 环境逐条实测。
一、环境信息
- 操作系统:Debian 11.11(bullseye,x86_64)
- Fusion Directory:1.5-1(含 mail/posix 插件包)
- 目录服务:OpenLDAP slapd 2.4.57+dfsg-3+deb11u1,后缀
dc=example,dc=net,uid=fd-admin为超管 - 演示账号:LDAP 管理员
cn=admin,dc=example,dc=net,密码q1w2e3r4;Fusion Directory 管理员fd-admin,密码q1w2e3r4 - CLI 工具位置:
/usr/sbin/fusiondirectory-* - Web 入口:
http://<服务器IP>/fusiondirectory/index.php
二、工具概览
本节给出 5 个工具的分工地图,先知道"干什么用什么",后面逐个详解。
| 工具 | 职责 | 高频子命令 |
|---|---|---|
| fusiondirectory-configuration-manager | 平台配置体检/查看/修改,凭据加密 | check-config、check-ldap、show-config、set-config |
| fusiondirectory-schema-manager | 向 LDAP 注册/查看/替换 schema | list-schemas、insert-schema、show-schema |
| fusiondirectory-plugins-manager | 插件注册/注销/清单 | list-plugins、register-plugin、unregister-plugin |
| fusiondirectory-migration-manager | 历史数据迁移与 ID 冲突检查 | check-ids、migrate-users、list-deprecated |
| fusiondirectory-orchestrator-client | 对接 Orchestrator 部署调度(需另装 fusiondirectory-orchestrator 包) | — |
工具清单的权威获取方式:
ls /usr/sbin/ | grep ^fusiondirectory-
实测回显:
fusiondirectory-configuration-manager
fusiondirectory-migration-manager
fusiondirectory-orchestrator-client
fusiondirectory-plugins-manager
fusiondirectory-schema-manager
💡 技术拓展:LDAP 数据的操作不止 Fusion Directory 自带工具这一条路。常见选项——
名称 特点 适用场景 ldapadd/ldapmodify/ldapdelete OpenLDAP 原生客户端,直接改库 批量脚本、CRUD 端到端 slapcat/slapadd 服务端离线导出/导入,含 operational 属性 全库备份/冷恢复 fusiondirectory-* 管理器 校验 + 落点正确,感知 FD 数据模型 schema/插件/配置变更 Apache Directory Studio 图形化桌面浏览编辑 人工排查 本文主线采用"fusiondirectory-* 管家 + OpenLDAP 原生客户端"组合:结构变更用管家(校验兜底),数据条目用原生客户端。
三、前置条件
本节确认工具可用的环境状态,三条逐项实测。
- 服务健康(slapd 与 Apache 双 active):
systemctl is-active slapd
systemctl is-active apache2
实测回显:
active
active
- 平台配置与目录体检通过(工具自带体检子命令,详见 4.1):
fusiondirectory-configuration-manager --check-config --yes
实测回显:
# Checking FusionDirectory's config file
/etc/fusiondirectory/fusiondirectory.conf exists…
Rights on "/etc/fusiondirectory/fusiondirectory.conf" are correct
- LDAP 管理员可绑定(后续所有 ldap* 命令的凭据基础):
ldapwhoami -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4
实测回显:
dn:cn=admin,dc=example,dc=net
四、各工具详解
本节按工具逐个展开:帮助原文 → 子命令详解 → 实测示例与回显。
4.1 fusiondirectory-configuration-manager(配置管家)
完整帮助(实测):
fusiondirectory-configuration-manager --help
实测回显(输出节选(实测首尾)):
Usage: /usr/sbin/fusiondirectory-configuration-manager --list-vars --set-var VALUE --write-vars --show-version --check-config --check-directories --show-config --set-config VALUE --check-ldap --update-cache --encrypt-passwords --show-passwords --update-locales --ldapuri VALUE --binddn VALUE --bindpwd VALUE --saslmech VALUE --saslrealm VALUE --saslauthcid VALUE --saslauthzid VALUE --yes --verbose --help
--list-vars List an example of a possible var to give to --set-var followed by --write-vars
--set-var: Set the variable value
--write-vars Choose FusionDirectory Directories
--show-version Show FusionDirectory version from variables_common.inc
--check-config Checking FusionDirectory's config file
--check-directories Checking FusionDirectory's directories
--show-config Show an LDAP dump of the FusionDirectory configuration
--set-config: Set the value in LDAP of a FusionDirectory configuration field
--check-ldap Checking your LDAP tree
--update-cache Update class.cache file
--encrypt-passwords Encrypt passwords in fusiondirectory.conf
--show-passwords Show passwords from fusiondirectory.conf
--update-locales Update translation files
--yes Answer yes to all questions
--help Show this help
四个体检子命令一次跑全(参数含义与逐项解读见配置参数详解篇,此处给实测回显):
fusiondirectory-configuration-manager --check-config --yes
fusiondirectory-configuration-manager --check-ldap --yes
fusiondirectory-configuration-manager --check-directories --yes
实测回显(三条依次):
# Checking FusionDirectory's config file
/etc/fusiondirectory/fusiondirectory.conf exists…
Rights on "/etc/fusiondirectory/fusiondirectory.conf" are correct
# Checking your LDAP tree
Role "cn=admin,ou=aclroles,dc=example,dc=net" is an admin ACL role
uid=fd-admin,ou=people,dc=example,dc=net is a valid admin
/var/cache/fusiondirectory/fai exists…
Rights on "/var/cache/fusiondirectory/fai" are correct
/var/cache/fusiondirectory/template exists…
Rights on "/var/cache/fusiondirectory/template" are correct
配置改值实测(fdTimezone,改完回查):
fusiondirectory-configuration-manager --set-config "fdTimezone=Asia/Shanghai" --yes
fusiondirectory-configuration-manager --show-config --yes 2>&1 | grep fdTimezone
实测回显:
# Set the value in LDAP of a FusionDirectory configuration field: fdTimezone=Asia/Shanghai
Setting configuration var fdTimezone to "Asia/Shanghai"
fdTimezone: Asia/Shanghai
版本与缓存两个低频但有用的子命令:
fusiondirectory-configuration-manager --show-version
fusiondirectory-configuration-manager --update-cache
实测回显:
FusionDirectory : 1.5
Update class.cache file success
4.2 fusiondirectory-schema-manager(schema 管家)
完整帮助实测回显(节选):
Usage: /usr/sbin/fusiondirectory-schema-manager --list-schemas --insert-schema VALUE --empty-schema VALUE --remove-schema VALUE --replace-schema VALUE --show-schema VALUE --ldapuri VALUE --binddn VALUE --bindpwd VALUE --saslmech VALUE --saslrealm VALUE --saslauthcid VALUE --saslauthzid VALUE --simplebind --verbose --help
--list-schemas List schemas
--insert-schema: Insert schema
--empty-schema: Empty schema
--remove-schema: Remove schema (OpenLDAP > 2.5)
--replace-schema: Replace schema
--show-schema: Show a schema definitions
--simplebind Disable SASL, use simple bind
⚠️ 排障实录 1(连接方式):schema-manager 默认走 ldapi:///(本机 socket + SASL EXTERNAL),以 root 身份执行开箱即用;实测用 --ldapuri ldap://localhost --binddn ... --bindpwd ... --simplebind 反而报 Search for schemas failed: No such object。定位:cn=schema 的查询依赖 EXTERNAL 映射的 root 权限。结论:schema 管理一律 root + 默认 ldapi,不传连接参数。
schema 清单(安装后应含 4 个核心 + 已装插件的 schema):
fusiondirectory-schema-manager --list-schemas
实测回显(输出节选(实测首尾)):
Schemas:
core: Added: 2026-10-28 - Attributes: 52, ObjectClasses: 27
cosine: Added: 2026-10-28 - Attributes: 41, ObjectClasses: 13
nis: Added: 2026-10-28 - Attributes: 25, ObjectClasses: 13
inetorgperson: Added: 2026-10-28 - Attributes: 9, ObjectClasses: 1
core-fd: Added: 2026-10-28 - Attributes: 75, ObjectClasses: 16
core-fd-conf: Added: 2026-10-28 - Attributes: 95, ObjectClasses: 4
ldapns: Added: 2026-10-28 - Attributes: 1, ObjectClasses: 2
template-fd: Added: 2026-10-28 - Attributes: 1, ObjectClasses: 1
mail-fd: Added: 2026-10-28 - Attributes: 14, ObjectClasses: 3
mail-fd-conf: Added: 2026-10-28 - Attributes: 8, ObjectClasses: 1
插入(标准动作用于新装插件 schema;以 core-fd 为例,已注册时会报已存在):
fusiondirectory-schema-manager --insert-schema /etc/ldap/schema/fusiondirectory/core-fd.schema
实测回显:
Installing : cn=core-fd,cn=schema,cn=config ...
查看某个 schema 的完整定义(属性 + 对象类,写 ACL/脚本时当字典用):
fusiondirectory-schema-manager --show-schema core-fd 2>&1 | head -12
实测回显(输出节选(实测首尾)):
core-fd: Added: 2026-10-28 - Attributes: 75, ObjectClasses: 16
# Attributes:
attributetype ( 1.3.6.1.4.1.10098.1.1.12.30
NAME 'gosaGroupObjects'
DESC 'GOsa - List of all object types that are in a gosaGroupOfNames'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE)
--replace-schema 用于 schema 升级覆盖(同 OID 重定义时使用);--remove-schema 仅 OpenLDAP 2.5+ 支持,本文环境 slapd 2.4 不适用(帮助原文已标注)。
4.3 fusiondirectory-plugins-manager(插件管家)
完整帮助实测回显(节选):
Usage: /usr/sbin/fusiondirectory-plugins-manager --list-vars --set-var VALUE --register-plugin VALUE --unregister-plugin VALUE --install-plugin VALUE --remove-plugin VALUE --list-plugins --debug --verbose --ldapuri VALUE --binddn VALUE --bindpwd VALUE --saslmech VALUE --saslrealm VALUE --saslauthcid VALUE --saslauthzid VALUE --yes --help
--register-plugin: Register plugin within LDAP
--unregister-plugin: Delete entry within LDAP
--install-plugin: Install plugin within FD and register it within LDAP
--remove-plugin: Remove plugin from FD and LDAP
--list-plugins List installed FusionDirectory plugins
⚠️ 排障实录 2(register 与 install 的区别):对 apt 安装的插件执行 fusiondirectory-plugins-manager --install-plugin mail 会报 mail does not exist——--install-plugin 只接受插件源码目录(含 contrib/yaml)或 tar.gz 路径;打包式插件的注册必须用 --register-plugin <yaml路径>,yaml 固定在 /etc/fusiondirectory/yaml/<插件名>/description.yaml。
清单 + 注销 + 重注册完整闭环实测(验证注册/注销对 LDAP 的实际影响):
fusiondirectory-plugins-manager --list-plugins
fusiondirectory-plugins-manager --unregister-plugin posix --yes
fusiondirectory-plugins-manager --list-plugins
fusiondirectory-plugins-manager --register-plugin /etc/fusiondirectory/yaml/posix/description.yaml --yes
fusiondirectory-plugins-manager --list-plugins
实测回显(依次):
Number of plugins installed : 2
Plugin : mail is installed
Plugin : posix is installed
posix plugin has been successfully unregistered.
Number of plugins installed : 1
Plugin : mail is installed
Installing : cn=posix,ou=pluginManager,dc=example,dc=net ...
Number of plugins installed : 2
Plugin : mail is installed
Plugin : posix is installed
注册的落点验证(ou=pluginManager 子树):
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -b "ou=pluginManager,dc=example,dc=net" dn
实测回显(输出节选):
dn: cn=mail,ou=pluginManager,dc=example,dc=net
dn: cn=posix,ou=pluginManager,dc=example,dc=net
4.4 fusiondirectory-migration-manager(迁移管家)
完整帮助实测回显(节选):
Usage: /usr/sbin/fusiondirectory-migration-manager --list-vars --set-var VALUE --migrate-interfaces --remove-supann-root --migrate-users --check-ids --list-deprecated --check-deprecated --ldif-deprecated --ldapuri VALUE --binddn VALUE --bindpwd VALUE --yes --verbose --help
--migrate-interfaces Migrating your systems from FD < 1.4
--remove-supann-root Remove SupAnn root establishment from FD < 1.4
--migrate-users Migrating your users
--check-ids Checking for duplicated uid or gid numbers
--list-deprecated List deprecated attributes and objectclasses
--check-deprecated List LDAP entries using deprecated attributes or objectclasses
--ldif-deprecated Print an LDIF removing deprecated attributes
⚠️ 注意:1.5 已无 --migrate-groups(1.4 时代遗留参数被移除),组迁移不在 CLI 职责内。
ID 冲突检查(POSIX 环境上线前必跑):
fusiondirectory-migration-manager --check-ids --yes
实测回显:
There are no duplicated uidNumbers
There are no duplicated gidNumbers
废弃属性排查(从旧版本升级后的清理依据):
fusiondirectory-migration-manager --list-deprecated --yes 2>&1 | head -6
实测回显(输出节选(实测首尾)):
Deprecated attributes:
fdHttpAuthActivated (FusionDirectory - HTTP Basic Auth activation) - 1.3.6.1.4.1.38414.8.15.6
fdHttpHeaderAuthActivated (FusionDirectory - HTTP Header Auth activation) - 1.3.6.1.4.1.38414.8.15.7
fdCasActivated (FusionDirectory - CAS activation) - 1.3.6.1.4.1.38414.8.21.1
gosaMailMaxSize (Block mails bigger than this value) - 1.3.6.1.4.1.10098.1.1.12.8
gosaSpamSortLevel (Spamassassins hits) - 1.3.6.1.4.1.10098.1.1.12.9
4.5 fusiondirectory-orchestrator-client(部署调度客户端,选装)
实测执行 fusiondirectory-orchestrator-client --help 直接报错:
PHP Warning: require(/usr/share/fusiondirectory-orchestrator/config/bootstrap.php): failed to open stream: No such file or directory in /usr/sbin/fusiondirectory-orchestrator-client on line 5
PHP Fatal error: require(): Failed opening required '/usr/share/fusiondirectory-orchestrator/config/bootstrap.php'
定位:该 CLI 依赖 fusiondirectory-orchestrator 包(Argonaut 部署体系的服务端),主程序不含。未部署 FAI/OPSI 自动化装机的环境不需要它,忽略即可;需要时 apt-get install fusiondirectory-orchestrator 后再使用。
五、LDAP 条目 CRUD 与界面可见性端到端实测
本节把"命令行改数据 → Web 界面立即可见"的闭环一次跑通,这是理解 Fusion Directory 与 LDAP 关系的最好实验。全程 ldap* 原生客户端。
创建用户(ldapadd):
cat > /tmp/user.ldif <<'EOF'
dn: uid=jdoe,ou=people,dc=example,dc=net
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
uid: jdoe
cn: John Doe
givenName: John
sn: Doe
mail: jdoe@example.net
telephoneNumber: +86.10.12345678
userPassword: q1w2e3r4
EOF
ldapadd -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -f /tmp/user.ldif
实测回显:
adding new entry "uid=jdoe,ou=people,dc=example,dc=net"
创建 POSIX 组(注意 objectClass 组合,见第六节排障实录 4):
cat > /tmp/group4.ldif <<'EOF'
dn: cn=devs,ou=groups,dc=example,dc=net
objectClass: posixGroup
objectClass: gosaGroupOfNames
cn: devs
description: Development team
gidNumber: 20001
gosaGroupObjects: user
member: uid=jdoe,ou=people,dc=example,dc=net
EOF
ldapadd -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -f /tmp/group4.ldif
实测回显:
adding new entry "cn=devs,ou=groups,dc=example,dc=net"
修改条目(ldapmodify,replace 改电话 + add 追加描述):
cat > /tmp/mod.ldif <<'EOF'
dn: uid=jdoe,ou=people,dc=example,dc=net
changetype: modify
replace: telephoneNumber
telephoneNumber: +86 10 88886666
-
add: description
description: modified by ldapmodify on 2026-10-28
EOF
ldapmodify -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -f /tmp/mod.ldif
实测回显:
modifying entry "uid=jdoe,ou=people,dc=example,dc=net"
修改前后对比(ldapsearch):
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 \
-b "uid=jdoe,ou=people,dc=example,dc=net" -s base telephoneNumber description
实测回显:
dn: uid=jdoe,ou=people,dc=example,dc=net
telephoneNumber: +86 10 88886666
description: modified by ldapmodify on 2026-10-28
界面可见性验证:登录 fd-admin 后进入 Users 列表(main.php?plug=41&reset=1),实测 jdoe 行出现,条目链接带完整 DN(title="uid=jdoe,ou=people,dc=example,dc=net");Groups 列表(plug=17)中 devs 在 posix 插件注册后可见。结论:CLI 与 Web 是同一 LDAP 库的两个视图,零同步延迟。
六、备份与恢复闭环实测
本节交付生产级备份恢复全流程:备份 → 破坏 → 两种恢复路径。这是 1.5 数据安全的主保全手段(平台配置也在库里,全库备份即全平台备份)。
第一步,全库备份(slapcat):
slapcat -n 1 -l /tmp/backup-20261028.ldif
grep -c "^dn:" /tmp/backup-20261028.ldif
实测回显:
21
第二步,模拟事故(删除两个测试条目):
ldapdelete -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 \
"uid=jdoe,ou=people,dc=example,dc=net" "cn=devs,ou=groups,dc=example,dc=net"
验证已删除:
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 \
-b "dc=example,dc=net" "(|(uid=jdoe)(cn=devs))" dn
实测回显:无匹配条目输出(0 条)。
第三步 A,错误姿势实录(直接回灌 slapcat 备份必失败):slapcat 导出的 LDIF 含 operational 属性,而它们是只读的:
ldapadd -x -c -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -f /tmp/restore-naive.ldif
实测回显:
ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed
ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed
第三步 B,正确姿势 1:热恢复(服务不停,剥离 operational 属性后回灌):
sed -E "/^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp)($|: )/d; /^[[:space:]]/d" \
/tmp/backup-20261028.ldif > /tmp/restore-clean.ldif
ldapadd -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -f /tmp/restore-clean.ldif
实测回显:
adding new entry "uid=jdoe,ou=people,dc=example,dc=net"
adding new entry "cn=devs,ou=groups,dc=example,dc=net"
验证恢复内容为备份时点状态(jdoe 电话是备份时的 +86 10 88886666):
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 \
-b "uid=jdoe,ou=people,dc=example,dc=net" -s base telephoneNumber
实测回显:
dn: uid=jdoe,ou=people,dc=example,dc=net
telephoneNumber: +86 10 88886666
第三步 C,正确姿势 2:冷恢复全库(slapadd,适用于库损坏/整机重建)。按步骤逐条执行,每条一个动作:
systemctl stop slapd
rm -f /var/lib/ldap/*
slapadd -n 1 -l /tmp/backup-20261028.ldif
⚠️ 注意 slapadd 必须在 slapd 停止时执行(离线写库),且完成后必须把属主还给 openldap:
chown -R openldap:openldap /var/lib/ldap
systemctl start slapd
验证(服务状态 + 条目数与备份一致):
systemctl is-active slapd
ldapsearch -x -H ldap://localhost -D "cn=admin,dc=example,dc=net" -w q1w2e3r4 -b "dc=example,dc=net" dn | grep -c "^dn:"
实测回显:
active
21
条目数 21 与备份一致,且 uid=fd-admin 在库(登录能力保留),冷恢复闭环完成。
七、注意事项
本节汇总使用 CLI 时的安全与习惯约束,全部来自实测教训。
- 非交互终端一律加
--yes:管理器的交互式提问在 cron/脚本环境会直接崩溃(实测报TypeError: askYnQuestion()),所有 fusiondirectory-* 命令在脚本中必须带--yes。 - schema-manager 用 root + 默认 ldapi:不要画蛇添足传
--ldapuri/--binddn/--bindpwd/--simplebind(见 4.2 排障实录 1)。 - 改配置走 --set-config,别 ldapmodify 直改 cn=config:绕过校验会写坏属性,回滚靠改前留底或快照。
- 备份文件包含全部密码哈希:
/tmp/backup-*.ldif等备份文件权限应收紧(chmod 600)并移入安全存储,本文演示放 /tmp 仅为路径简短。 - UI 操作与 CLI 等价但有校验差异:Web 建组会强制 member 必填等约束,CLI 无校验;两侧行为差异排查时先查 objectClass 组合(见 FAQ Q3)。
八、常见问题(FAQ)
Q1:fusiondirectory-configuration-manager --check-config 在脚本里崩溃报 TypeError: askYnQuestion()。
定位:非交互终端触发交互提问,通常是配置文件权限不对。解决:chown root:www-data /etc/fusiondirectory/fusiondirectory.conf && chmod 640 并加 --yes(实测恢复)。
Q2:--list-plugins 显示 0 但用户管理功能正常。
定位:1.5 的 users/groups 等基础功能属内核插件无需注册,清单只统计 mail/posix 等可选插件。实测基础环境计数为 0 属正常。
Q3:ldapadd 建组反复失败。 三种实测报错与正确姿势:
gosaGroup类名不存在 → 用gosaGroupOfNames;invalid structural object class chain (groupOfNames/posixGroup)→ groupOfNames 与 posixGroup 是两个 structural 类不能同条目;object class gosaGroupOfNames requires attribute gosaGroupObjects→ 补gosaGroupObjects: user。 最终可用组合:posixGroup + gosaGroupOfNames + gosaGroupObjects(POSIX 组)或groupOfNames + gosaGroupOfNames(Fusion Directory 界面原生建的 Object group,实测产物)。
Q4:posixGroup 组在 Groups 列表不显示。
定位:未装 posix 插件时列表只检索 (objectClass=groupOfNames)。解决:apt-get install fusiondirectory-plugin-posix + fusiondirectory-plugins-manager --register-plugin /etc/fusiondirectory/yaml/posix/description.yaml --yes 后重新登录(配置按会话缓存)。实测 devs 组在重登后出现。
Q5:fusiondirectory-orchestrator-client 一执行就 PHP Fatal error。
定位:依赖 fusiondirectory-orchestrator 包,未装(见 4.5)。不做自动化装机可忽略。
Q6:slapcat 备份直接 ldapadd 回灌失败。 现象与解决见第六节第三步 A/B 实录:剥离 7 类 operational 属性后热恢复,或停服 slapadd 冷恢复。
配置参数的逐项含义与生产模板见 《Fusion Directory 1.5 配置参数详解》;后端目录若选 389DS,其命令行运维(dsconf/dsctl 家族)见 《389 Directory Server 常用命令行详解》,备份恢复思路相通但工具完全不同。
九、参考链接
- 官方 CLI 文档:https://fusiondirectory-user-manual.readthedocs.io
- OpenLDAP 管理指南(slapcat/slapadd):https://www.openldap.org/doc/admin24/
- 站内相关文档: