LDAP构build脚本在openLDAP-2.4.31上失败(ldapmodify -Y EXTERNAL -H ldapi:///)

原文问题:

我想将密码设置为后端pipe理员,以便我可以将LDAP ACL更改为我需要的内容…不用说,我不希望将我的configuration发布到所有地方,再加上.ldif文件是正确的。 我只是无法连接ldapi:///服务器。 (只是…)

直到最后一次更新,我的LDAP构build脚本一直没有问题(不包括一点儿摆弄),这个版本的openLDAP我已经看到了很多关于错误报告的问题,在这里,但没有解决这个问题(我找不到一个工作…)。

我正在运行最新的Ubuntu MATE。 防火墙已closures。 尝试访问服务器,因此:

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

这是对数据库的调用,当服务器是ldapi://localhost:389时,错误消息是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 

我一直在debugging这一段时间,所以我的脚本几乎吐出一切。 所有其他数据库修改工作正常,DIT,其他pipe理员的添加,组和成员的添加。 它只是连接到ldapi:///服务(在/ etc / default / slapd中)。 我只有ldap-util和slapd安装。

(旁白:当这个工作(再次)我有一个相当不错的LDAP库在Python中…虽然这是一个简单的)

编辑:

乌得勒支是正确的,端口389处于侦听状态:

ss -nat |grep 389

听0 128 *:389
LISTEN 0 128 ::: 389 ::: *

我正在运行LDAP服务器正在运行的框中的命令。

实际上并不确定为什么我运行sudo命令…没有完全相同的行为。 我记得把它放在那里,试图查看/ etc / ldap / … dir(由root拥有)是否正在写入,在这种情况下,没有发生实际的LDAP身份validation来提供访问只是把它留在那里,因为没有任何行为改变。

编辑2:

ss -lp | grep slapd

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

sudo netstat -lxp | grep slapd

unix 2 [ACC] STREAM LIVEENING 20860 – / var / run / slapd / ldapi

我想84104的意图是我用/var/run/slapd/ldapireplaceldapi:/// ,所以我已经完成了:

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

无法parsingLDAP URI(s)= / var / run / slapd / ldapi(3)

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

无法parsingLDAP URI(s)= ldapi:/ var / run / slapd / ldapi(3)

和(完整性检查):

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

DNS SRV:无法将DN =“var / run / slapd / ldapi”转换为域

所以,那里没有骰子。 我想,slapd会将ldapi:///分析到正确的文件path中,以保持与调用数据库的一致性,因为ldap通常用作远程身份validation系统。

/ var / run / slapd / ldapi存在,但是我看不到里面是什么,并且:

sudo find / -name ldapi

/运行/ ldapi
/运行/ slapd的/ ldapi

ls -ao /var/run/slapd

srwxrwxrwx 1 root 0 Jul 13 10:38 ldapi
-rw-r – r– 1 openldap 84 Jul 13 10:38 slapd.args
-rw-r – r– 1 openldap 5 Jul 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} config,cn = config作用域中,使用:

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

并通过将ACL.ldif拆分为ACL_add.ldif和ACL_del.ldif,将所需的ACL放入数据库的范围。

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

但是,原始的olcAccess行保留在olcDatabase {1} hdb.ldif中,并且没有密码或dn的组合授予必要的权限来删除它们。

现在的问题是:我需要使用哪个pipe理员范围来删除olcDatabase {1} hdb中的olcAccess行?

olcDatabase {0} config.ldif中的olcRootDN / PW组合抛出(53),这基本上意味着DN / PW超出了范围,olcDatabase {1} hdb.ldif中的olcRootDN / PW组合引发(49)要么“不正确的访问级别”或“不正确的pwd / dn组合”(不是)。

ACL_del.ldif文件在ACL_add.ldif之前应用