如何从 LDAP 中删除所有记录?

How to remove all records from LDAP?

是否可以通过一行命令从 LDAP 中删除所有条目?

我试过了:

ldapdelete -r 'cn=*,dc=domain,dc=com' -w

但它不起作用。我没有更好的主意;/

ldapdelete是去掉特定的DN,不能使用通配符。

没有本地人"oneliner"。您可以执行 ldapsearch 并将此搜索结果的 DN 列表提供给 ldapdelete

类似于:

ldapsearch -LLL -s one -b "dc=domain,dc=com" "(cn=*)" dn | awk -F": " '~/^\s*dn/{print }' > listOfDNtoRemove.txt && ldapdelete -r -f listOfDNtoRemove.txt
  • -s one : ldapsearch 上的这个选项是只检索分支 dc=domain,dc=com
  • 下的第一层 child
  • -LLL : 这个选项是有LDIF格式输出
  • -r :这个选项是递归删除之前找到的一级分支及其childs
  • awk -F": " '~/^\s*dn/{print }' :这个 awk 是仅打印以 dn: 开头的行并打印 dn
  • 的值

注意:ldapdelete 还从标准输入中读取 DN 列表,因此如果您想避免使用临时文件,可以将 ldapsearch 结果直接通过管道传输到 ldapdelete

使用 HDB 后端

您可以尝试这种方法:转到 /var/lib/ldap 目录并 运行 此命令:

sudo rm __db.* *.bdb log.*

slapd 服务器最好在 运行 执行此命令之前关闭。

确保在执行此操作之前备份文件

使用 MDB 后端

同上,只是文件名不同:

sudo rm *.mdb