ОРИГИНАЛЬНЫЙ ВОПРОС:
Я хочу установить пароль для внутреннего администратора, чтобы я мог изменить 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