我正在运行openldap 2.4.21
并ubuntu 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
。