核心特性与使用场景
- 离线操作
必须停止slapd
服务 后再执行(systemctl stop slapd
),否则会导致数据损坏。 - 适用场景
- 首次部署 LDAP 时初始化目录树
- 从备份的 LDIF 文件恢复数据
- 批量导入大量数据(效率高于在线
ldapadd
)
命令语法详解
slapadd [选项] -l <LDIF文件>
常用选项:
| 选项 | 作用 |
|—————|———————————————————————-|
| -l <文件>
| 指定输入的 LDIF 文件路径(必需) |
| -f <文件>
| 指定 slapd.conf
或 slapd.d
的配置文件路径(默认:/etc/ldap/slapd.conf
) |
| -F <目录>
| 指定动态配置目录(如 /etc/ldap/slapd.d/
) |
| -b <后缀>
| 指定要导入的数据库后缀(如 dc=example,dc=com
) |
| -c
| 忽略错误继续执行(慎用) |
| -v
| 显示详细处理过程 |
完整操作流程(以 Ubuntu 为例)
步骤 1:准备 LDIF 文件
创建数据文件 import.ldif
需符合 LDAP 对象结构:
dn: dc=example,dc=com objectClass: top objectClass: domain dc: example dn: ou=users,dc=example,dc=com objectClass: organizationalUnit ou: users
步骤 2:停止 slapd 服务
sudo systemctl stop slapd
步骤 3:执行数据导入
sudo slapadd -v -l import.ldif -F /etc/ldap/slapd.d/
-v
:显示导入详情(如处理条目数)-F
:指定动态配置目录(根据实际路径调整)
步骤 4:修复文件权限
sudo chown -R openldap:openldap /var/lib/ldap/
步骤 5:重启服务
sudo systemctl start slapd
关键注意事项
- 数据备份
操作前备份数据库目录(默认/var/lib/ldap/
):sudo cp -r /var/lib/ldap /backup/ldap
- LDIF 文件规范
- 每条目以
dn
开头,空行分隔不同条目 - 属性名区分大小写(如
objectClass
不能写成objectclass
)
- 每条目以
- 权限问题
- 必须用
root
或openldap
用户执行 - 导入后检查文件所有权:
chown -R openldap:openldap /var/lib/ldap
- 必须用
- 错误排查
- 若提示
ldif_read_file: checksum error
→ 检查 LDIF 文件格式 - 若报错
database already contains data
→ 清空/var/lib/ldap/
再导入(谨慎操作!)
- 若提示
与 ldapadd
的对比
特性 | slapadd |
ldapadd |
---|---|---|
服务状态 | 需停止 slapd |
slapd 运行中 |
性能 | 高速(直接写数据库) | 较慢(走网络协议) |
原子性 | 无(失败可能部分写入) | 支持事务 |
适用数据量 | 百万级条目 | 中小规模数据 |
进阶技巧
- 增量导入
追加数据时使用-c
忽略重复条目错误:sudo slapadd -c -l new_data.ldif
- 指定后端数据库
多数据库环境下通过-n <编号>
选择(编号对应olcDbIndex
配置):sudo slapadd -n 2 -l data.ldif # 导入到第二个数据库
引用说明基于 OpenLDAP 官方文档(slapadd(8C) – Linux Man Page)及常见运维实践整理,操作涉及系统权限,建议在测试环境验证后再部署到生产环境。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5790.html