Изучение 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 - вы комбинируете поиск классов до тех пор, пока не доберетесь до определенного подмножества элементов, которые вам нужны. Что может быть неверным мнением.

0
задан 12 May 2021 в 10:32
1 ответ

Я считаю, что это похоже на классы в HTML - вы комбинируете поиск классов, пока не дойдете до определенного подмножества элементов, которые вам нужны. Что может быть неверным мнением.

Это было бы правильно для 'ldapsearch', где вы даете ему фильтр, который соответствует определенным атрибутам (который часто включает objectClass в качестве первого условия), и он выдает найденные записи.

Но это не правильно для 'ldapmodify'. При изменении или удалении записи вы всегда указываете точный DN записи, которую вы хотите обновить; в LDIF это поле dn:. Это совсем не фильтр на основе атрибутов - DN записи - это ее точный уникальный путь, очень похожий на путь файловой системы.

(Часто модификации LDAP действительно производятся путем сначала выполнения поиска на основе атрибутов для определения DN записей, а затем модификации каждой записи по ее DN по очереди.)

Поэтому при просмотре результатов 'ldapsearch' или 'slapcat', вы просто берете значение 'dn:', показанное в первой строке каждого результата. В вашем случае запись, описывающая главную базу данных, имеет следующий вид olcDatabase={1}mdb,cn=config.

2
ответ дан 28 July 2021 в 13:56

Теги

Похожие вопросы