学习 OpenLDAP,遵循“较旧”的教程 - 需要更新 hdb 与 mdb,调整步骤以继续前进

学习 OpenLDAP,遵循“较旧”的教程 - 需要更新 hdb 与 mdb,调整步骤以继续前进

http://www.rjsystems.nl/en/2100-d6-kerberos-openldap-provider.php

本 2017 教程使用 hdb olcDatabase——现代安装默认使用 mdb。

我目前所处的步骤是:http://www.rjsystems.nl/en/2100-d6-kerberos-openldap-provider.php#cncf

变更 2.1.1

# 2.1.1
dn: olcDatabase={1}hdb,cn=config
changetype: modify
delete: olcAccess
olcAccess: {2}to *
  by self write
  by dn="cn=admin,dc=example,dc=com" write
  by * read

首先,我知道我使用的 OpenLDAP 版本默认为 mdb——但是,这种简单的改变还不够。

我知道 dn:olcDatabase={1}hdb,cn=config 需要修改才能匹配。我认为这是在你未登录 OpenLDAP 计算机本身时删除管理员权限。但是,我还不够聪明,无法理解如何构造一个好的搜索字符串,甚至无法将其分解。我只是还没有理解它。

我确实学会了如何转储我的配置树。

root@auth:~/ldap# slapcat -n 0
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: 4233e57c-461f-103b-823a-eddba7c2a4d6
creatorsName: cn=config
createTimestamp: 20210510210556Z
olcLogLevel: stats
entryCSN: 20210510211216.057315Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20210510211216Z

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_mdb
structuralObjectClass: olcModuleList
entryUUID: 42344030-461f-103b-8242-eddba7c2a4d6
creatorsName: cn=admin,cn=config
createTimestamp: 20210510210556Z
entryCSN: 20210510210556.957974Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20210510210556Z

...

dn: olcBackend={0}mdb,cn=config
objectClass: olcBackendConfig
olcBackend: {0}mdb
structuralObjectClass: olcBackendConfig
entryUUID: 423454b2-461f-103b-8243-eddba7c2a4d6
creatorsName: cn=admin,cn=config
createTimestamp: 20210510210556Z
entryCSN: 20210510210556.958497Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20210510210556Z

dn: olcDatabase={-1}frontend,cn=config
objectClass: olcDatabaseConfig
objectClass: olcFrontendConfig
olcDatabase: {-1}frontend
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
structuralObjectClass: olcDatabaseConfig
entryUUID: 4233e996-461f-103b-823b-eddba7c2a4d6
creatorsName: cn=config
createTimestamp: 20210510210556Z
entryCSN: 20210510210556.955757Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210510210556Z

dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
structuralObjectClass: olcDatabaseConfig
entryUUID: 4233ef9a-461f-103b-823c-eddba7c2a4d6
creatorsName: cn=config
createTimestamp: 20210510210556Z
entryCSN: 20210510210556.955910Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20210510210556Z

dn: olcDatabase={1}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {1}mdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=bradchesney,dc=net
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * non
 e
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=bradchesney,dc=net
olcRootPW:: e1NTSEF9aGdrUVFacXpaMHBaTkVIYjVvalZwbEswQ1o5cWxsaXA=
olcDbCheckpoint: 512 30
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcDbMaxSize: 1073741824
structuralObjectClass: olcMdbConfig
entryUUID: 423457f0-461f-103b-8244-eddba7c2a4d6
creatorsName: cn=admin,cn=config
createTimestamp: 20210510210556Z
entryCSN: 20210510210556.958581Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20210510210556Z

但现在该怎么办?

我的猜测是我需要以某种方式连接到 olcDatabase(它在我的 config.ldif slapcat 转储中出现过几次)并删除那些条目。我的解释是它就像 HTML 中的类一样——您组合搜索类,直到精简到您想要的元素的不同子集。这可能是不正确的观点。

答案1

我的解释是,它就像 HTML 中的类——你组合搜索类,直到精简出你想要的元素子集。这可能是一个不正确的观点。

这对于“ldapsearch”来说是正确的,你可以给它一个与某些匹配的过滤器属性(通常包括 objectClass 作为第一个条件)它会吐出找到的条目。

但这是不是正确的是“ldapmodify”。修改或删除条目时,您始终指定精确的您要更新的条目 DN;在 LDIF 中,这就是字段dn:。这根本不是基于属性的过滤器 – 条目的 DN 是其确切的唯一路径,非常类似于文件系统路径。

(通常,LDAP 修改确实是通过首先执行基于属性的搜索来确定条目 DN,然后逐个修改每个条目的 DN 来进行的。)

因此,当查看“ldapsearch”或“slapcat”输出时,您只需获取显示为每个结果第一行的“dn:”的值。在您的例子中,描述主数据库的条目是olcDatabase={1}mdb,cn=config

相关内容