使用OpenLDap 2.4.21发布启用accesslog覆盖

我正在ubuntu server 10.04上运行openldap 2.4.21 ,并尝试使用cn=configconfiguration样式启用accesslog覆盖(所以不是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 

我从这个页面得到这些configuration指令,所以我假设他们是好的。 当我开始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: 

它看起来像我缺less架构,但是当我search包含上述属性的架构时,我什么都找不到

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

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

看起来你误解了Accesslog覆盖的function。 它将一个数据库的访问信息写入另一个数据库。 因此,如果您尝试监视对{1} hdb的访问,则必须设置第二个数据库,其中accesslog将写入信息。

创build一个名为accesslog的目录,位于/ var / lib / ldap /

 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 

我敢打赌,你确实用大写字母写下了这些属性。 OpenLDAP并不是YELLING的忠实粉丝,但是对大小写敏感的属性表示赞赏。

所以,例如,而不是OLCACCESSLOGDB使用olcAccessLogDB