Назад | Перейти на главную страницу

Сбой сценария сборки LDAP на openLDAP-2.4.31 (ldapmodify -Y EXTERNAL -H ldapi: ///)

ОРИГИНАЛЬНЫЙ ВОПРОС:

Я хочу установить пароль для внутреннего администратора, чтобы я мог изменить ACL LDAP на то, что мне нужно ... излишне говорить, что я не хочу, чтобы моя конфигурация размещалась повсюду, плюс файлы .ldif верны. Я просто не могу подключиться к ldapi:/// сервер. (просто...)

До последнего обновления мой сценарий сборки LDAP был в порядке (за исключением небольшого возни), с этой версией openLDAP я видел довольно много проблем в отчетах об ошибках и здесь, но ни один из них не решает это (и я не могу найти обход ...).

Я использую последнюю версию Ubuntu MATE. Брандмауэр выключен. Попытка доступа к серверу таким образом:

ldapi://localhost:389
ldapi:///
ldapi:///:389
ldapi://:389` 
tried `ldapadd ...

Вот вызов БД и сообщение об ошибке, когда сервер ldapi://localhost:389:

sudo ldapmodify -Y EXTERNAL -H ldapi://localhost:389 -f ./mcUser/management/LDAP/LDIFs/RPW.ldif
MODIFICATION attempt of ROOTPWD: ./mcUser/management/LDAP/LDIFs/RPW.ldif
 stdout:
 stderr:
ldap_url_parse_ext(ldapi://localhost:389)
ldap_initialize( ldapi://localhost:389/??base )
ldap_create
ldap_url_parse_ext(ldapi://localhost:389/??base)
ldap_sasl_interactive_bind: user selected: EXTERNAL
ldap_int_sasl_bind: EXTERNAL
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_path
ldap_new_socket: 5
ldap_connect_to_path: Trying localhost:389
ldap_connect_timeout: fd: 5 tm: -1 async: 0
ldap_ndelay_on: 5
ldap_close_socket: 5
ldap_msgfree
ldap_err2string
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

и для сервера, обозначенного как ldapi:///:

    sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ./mcUser/management/LDAP/LDIFs/RPW.ldif
    MODIFICATION attempt of ROOTPWD: ./mcUser/management/LDAP/LDIFs/RPW.ldif
     stdout:
     stderr:
    ldap_url_parse_ext(ldapi:///)
    ldap_initialize( ldapi:///??base )
    ldap_create
    ldap_url_parse_ext(ldapi:///??base)
    ldap_sasl_interactive_bind: user selected: EXTERNAL
    ldap_int_sasl_bind: EXTERNAL
    ldap_new_connection 1 1 0
    ldap_int_open_connection
    ldap_connect_to_path
    ldap_new_socket: 5
    ldap_connect_to_path: Trying /var/run/slapd/ldapi
    ldap_connect_timeout: fd: 5 tm: -1 async: 0
    ldap_ndelay_on: 5
    ldap_ndelay_off: 5
    ldap_int_sasl_open: host=birraleef
    SASL/EXTERNAL authentication started
    ldap_sasl_bind
    ldap_send_initial_request
    ldap_send_server_request
    ber_scanf fmt ({it) ber:
    ber_scanf fmt ({i) ber:
    ber_flush2: 26 bytes to sd 5
    ldap_msgfree
    ldap_result ld 0x7f2d73ca8b40 msgid 1
    wait4msg ld 0x7f2d73ca8b40 msgid 1 (infinite timeout)
    wait4msg continue ld 0x7f2d73ca8b40 msgid 1 all 1
    ** ld 0x7f2d73ca8b40 Connections:
    * host: (null)  port: 0  (default)
      refcnt: 2  status: Connected

      last used: Fri Jul  3 15:01:53 2015
    ** ld 0x7f2d73ca8b40 Outstanding Requests:
     * msgid 1,  origid 1, status InProgress
       outstanding referrals 0, parent count 0
      ld 0x7f2d73ca8b40 request count 1 (abandoned 0)
    ** ld 0x7f2d73ca8b40 Response Queue:
       Empty
      ld 0x7f2d73ca8b40 response count 0
    ldap_chkResponseList ld 0x7f2d73ca8b40 msgid 1 all 1
    ldap_chkResponseList returns ld 0x7f2d73ca8b40 NULL
    ldap_int_select
    read1msg: ld 0x7f2d73ca8b40 msgid 1 all 1
    ber_get_next
    ldap_err2string
    ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
    ldap_free_request (origid 1, msgid 1)
    ldap_free_connection 1 1
    ldap_free_connection: actually freed

Я уже некоторое время отлаживаю это, поэтому мой скрипт почти все выплевывает. Все остальные модификации БД работают нормально, DIT, добавления других админов, добавления групп и участников. Это только подключение к службе ldapi: /// (которая является в / etc / default / slapd). У меня установлены только ldap-util и slapd.

(в сторону: когда это заработает (снова), у меня есть довольно хорошая библиотека LDAP на python ... хотя это немного просто)

РЕДАКТИРОВАТЬ:

Утрехт правильный, порт 389 находится в состоянии LISTEN:

ss -nat |grep 389

СЛУШАТЬ 0 128 *: 389 :
СЛУШАТЬ 0128 ::: 389 ::: *

Я запускаю команду на компьютере, на котором запущен сервер LDAP.

Не совсем уверен, почему я запускаю команду как sudo ... поведение без идентично. Я помню, что поместил его туда как попытку увидеть, изменилось ли поведение при записи в каталог / etc / ldap / ... (принадлежащий root), в этом случае без реальной аутентификации LDAP для обеспечения доступа и просто оставил его там, так как поведение не изменилось.

РЕДАКТИРОВАТЬ 2:

ss -lp | grep slapd

u_str LISTEN 0 128 / var / run / slapd / ldapi 20860 * 0

и

sudo netstat -lxp | grep slapd

UNIX 2 [ACC] ПРОСЛУШИВАНИЕ ПОТОКА 20860 - / var / run / slapd / ldapi

Я полагаю, что цель 84104 состоит в том, чтобы заменить ldapi:/// с участием /var/run/slapd/ldapi так что я сделал это и:

ldapmodify -Y EXTERNAL -H /var/run/slapd/ldapi

Не удалось проанализировать URI LDAP = / var / run / slapd / ldapi (3)

и

ldapmodify -Y EXTERNAL -H ldapi:/var/run/slapd/ldapi

Не удалось проанализировать URI LDAP = ldapi: / var / run / slapd / ldapi (3)

и (проверка работоспособности):

ldapmodify -Y EXTERNAL -H ldapi:///var/run/slapd/ldapi

DNS SRV: не удалось превратить DN = "var / run / slapd / ldapi" в домен

Итак, никаких игральных костей. Я предполагаю, что slapd разбирает ldapi: /// в правильный путь к файлу, чтобы оставаться последовательным в том, как вы вызываете БД, поскольку ldap обычно используется как удаленная система аутентификации.

/ var / run / slapd / ldapi существует, но я не вижу, что внутри, и:

sudo find / -name ldapi

/ запустить / ldapi
/ запустить / slapd / ldapi

ls -ao /var/run/slapd

srwxrwxrwx 1 root 0 13 июл 10:38 ldapi
-rw-r - r-- 1 openldap 84 13 июл, 10:38 slapd.args
-rw-r - r-- 1 openldap 5 13 июл, 10:38 slapd.pid

cat /var/run/slapd/slapd.args

/ usr / sbin / slapd -h ldap: /// ldapi: /// -g openldap -u openldap -F /etc/ldap/slapd.d

cat /var/run/slapd/slapd.pid

1340

ОБНОВЛЕННЫЙ ВОПРОС:

Мне удалось вставить olcRootPW и olcRootDN в конфигурацию olcDatabase {0}, cn = config, используя:

`ldapmodify -Y EXTERNAL -H ldapi:/// -f ./mcUser/management/LDAP/LDIFs/RPW.ldif`

и поместите требуемый ACL в эту область базы данных, разделив ACL.ldif на ACL_add.ldif и ACL_del.ldif.

ldapmodify -b <config_admin> -w <admin_pwd> -f ./mcUser/management/LDAP/LDIFs/ACL_<add/del>.ldif

Однако исходные строки olcAccess остаются в olcDatabase {1} hdb.ldif, и никакая комбинация пароля или dn не предоставляет необходимые разрешения для их удаления.

Теперь возникает вопрос: какую административную область мне нужно использовать для удаления строк olcAccess в olcDatabase {1} hdb?

Комбинация olcRootDN / PW в olcDatabase {0} config.ldif выдает (53), что в основном означает, что DN / PW выходит за рамки, а комбинация olcRootDN / PW в olcDatabase {1} hdb.ldif выдает (49), что является либо «неправильный уровень доступа», либо «неправильная комбинация pwd / dn» (что не так).

Файл ACL_del.ldif применяется перед ACL_add.ldif