Мне стыдно, и здесь нужна небольшая помощь:
Я установил сервер openldap более 3 лет назад. Недавно я попытался получить доступ к cn = config base-dn (где я могу редактировать схему и прочее) с помощью моего веб-клиента phpldapadmin, чтобы изменить некоторые записи olcaccess (которые работали раньше, насколько я помню) для одного из bdb и мог не авторизуйтесь. или, лучше сказать: я могу войти в систему, но вижу только «пустую» страницу. Если "пусто" означает, что phpldap говорит: "вошел в систему как cn = admin, cn = config" под этой строкой я вижу свой basedn "dc = domain, dc = tld" с примечанием: "this bas не может быть создан с помощью PLA"
Я использовал cn = admin, cn = config для входа в систему.
чтобы быть более конкретным:
нормальный вход как «cn = user, dc = domain, dc = tld» на сервер openldap работает нормально. что изменилось с момента моего последнего входа в cn = config: обновление с debian jessie до debian buster. С учетом сказанного, я обновил nginx, phpldapadmin, php5-fpm до php7.3-fpm openldap и другие (не связанные?) Вещи на сервере.
Я никогда не замечал проблем после этого обновления (несколько недель назад) с настоящего момента. Я знаю, что могу изменить нужные записи с помощью ldapmodify, но мне было интересно, почему вход в систему с помощью phpldapadmin, а также мой клиент Windows «ldapadmin» не работает (больше?).
что я уже проверил:
ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config"
дай мне:
# {0}bdb, config
dn: olcBackend={0}bdb,cn=config
objectClass: olcBackendConfig
olcBackend: {0}bdb
# {-1}frontend, config
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=external
,cn=auth manage by * break
olcAccess: {1}to dn.exact="" by * read
olcAccess: {2}to dn.base="cn=Subschema" by * read
olcSizeLimit: 500
# {0}config, config
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external
,cn=auth manage by * break
olcRootDN: cn=admin,cn=config
olcRootPW: "HASH"
# {1}bdb, config
dn: olcDatabase={1}bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: {1}bdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=domain,dc=tld
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou
s auth by * none
olcAccess: {1}to dn.subtree=ou=users,dc=domain,dc=tld by dn=cn=anothermanager,dc
=domain,dc=tld read by * none
olcLastMod: TRUE
olcRootDN: cn=admin,dc=domain,dc=tld
olcRootPW: "HASH"
olcDbCheckpoint: 512 30
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
Я также заметил запись в вики в phpldapadmin:
There is a known problem with PHP, that when we attempt to get the schema with a blank dn, php-ldap replaces the blank dn with the BASE entry in /etc/openldap/ldap.conf
Edit /etc/openldap/ldap.conf and comment out the BASE entry, then restart your webserver.
Я бы сказал, что мой /etc/phpldapadmin/config.php не изменился.
он содержит необходимую запись в своем массиве "base dn":
$servers->setValue('server','base',array('cn=config','dc=domain,dc=tld'));