使用 Openldap 2.4.21 启用访问日志覆盖的问题

使用 Openldap 2.4.21 启用访问日志覆盖的问题

我正在运行openldap 2.4.21ubuntu server 10.04尝试使用配置样式启用 accesslog 覆盖cn=config(所以不是slapd.conf)。我的主要数据库是,olcDatabase={1}hdb所以我定义了以下模块:

/etc/ldap/slapd.d/cn=config/cn=module{2}.ldif

# accesslog overlay definitions for primary db
dn: olcOverlay=accesslog,olcDatabase={1}hdb
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# scan the accesslog DB every day, and purge entries older than 7 days
olcAccessLogPurge: 07+00:00 01+00:00

我得到了这些此页面的配置指令所以我假设它们很好。当我启动时,slapd我收到以下错误:

Nov 30 07:10:17 server slapd[11604]: UNKNOWN attributeDescription "OLCACCESSLOGDB" inserted.
Nov 30 07:10:17 server slapd[11604]: UNKNOWN attributeDescription "OLCACCESSLOGOPS" inserted.
Nov 30 07:10:17 server slapd[11604]: UNKNOWN attributeDescription "OLCACCESSLOGSUCCESS" inserted.
Nov 30 07:10:17 server slapd[11604]: UNKNOWN attributeDescription "OLCACCESSLOGPURGE" inserted.
Nov 30 07:10:17 server slapd[11604]: config error processing olcOverlay=accesslog,olcDatabase={1}hdb,cn=config: 

在我看来,我缺少一个架构,但是当我搜索包含上述属性的架构时,我什么也没找到

$ grep -iR "LOGDB" /etc/ldap/schema/
-

有人能告诉我我错过了什么吗?

答案1

看来您误解了 Accesslog 覆盖的作用。它将一个数据库的访问信息写入另一个数据库。因此,如果您尝试监控对 {1}hdb 的访问,则必须设置第二个数据库,以便 accesslog 将信息写入该数据库。

在 /var/lib/ldap/ 下创建一个名为 accesslog 的目录

mkdir /var/lib/ldap/accesslog
chown -R openldap:openldap /var/lib/ldap/accesslog

然后使用以下 ldif 设置第二个数据库

dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=root,dc=yourdomain,dc=com
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart

答案2

我敢打赌你确实用大写字母写了这些属性。OpenLDAP 不喜欢大喊大叫,但喜欢区分大小写的属性。

因此,例如,不要OLCACCESSLOGDB使用olcAccessLogDB

相关内容