我是MongoDB和LDAP的新手。我正在尝试使用LDAP来验证用户mongo。这些是我到目前为止所做的步骤。
ldap_servers: ldap://com.myldap.server ldap_use_sasl: yes ldap_mech: DIGEST-MD5 ldap_auth_method: fastbind
mux
内创建了/var/run/saslauthd
目录,现在看起来像/var/run/saslauthd/mux
使用sudo chmod 755 /var/run/saslauthd
修改/etc/sysconfig/saslauthd
以获得以下
MECH=ldap
DAEMONOPTS=--user saslauth
现在,当我尝试使用以下命令测试身份验证机制时:
testsaslauthd -u username -p password -f /var/run/saslauthd/mux
我收到以下消息:
connect(): Permission Denied
我的作品基于this和this 谁能指出我在这里缺少的东西?提前谢谢。
更新
我尝试使用sudo
测试命令,如下所示:
sudo testsaslauthd -u username -p password -f /var/run/saslauthd/mux
我得到以下内容:
connect() : Connection refused
答案 0 :(得分:2)
感谢您的提问。我喜欢设置我的环境以尝试重现错误。你会很高兴听到我不认为这是一个难以克服的难题。但是,我可能花费的时间比我想要设置MongoDB,cyrus-sasl-md5
,设置权限等更多时间,因为没有任何事实上与您的问题有关,至少乍一看。
您的问题(我90%肯定)是您的saslauthd
守护程序未运行或未正确配置。我们来看看以下内容:
检查service status
。 service saslauthd status
的输出应与我的相似,粘贴在下面。请注意一些关键值,例如init脚本的位置,在我的情况下为/etc/init.d/saslauthd/
;和套接字/var/run/saslauthd/mux
,您需要在testsaslauthd [...] -f /var/run/saslauthd/mux
命令中放置相同的文件位置。
root@hectorvp-pc:~# service saslauthd status
● saslauthd.service - LSB: saslauthd startup script
Loaded: loaded (/etc/init.d/saslauthd)
Active: active (running) since Tue 2016-04-26 12:04:59 BST; 1s ago
Docs: man:systemd-sysv-generator(8)
Process: 11569 ExecStop=/etc/init.d/saslauthd stop (code=exited, status=0/SUCCESS)
Process: 11586 ExecStart=/etc/init.d/saslauthd start (code=exited, status=0/SUCCESS)
Memory: 2.0M
CGroup: /system.slice/saslauthd.service
├─11606 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5
├─11607 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5
├─11608 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5
├─11609 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5
└─11610 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5
Apr 26 12:04:59 hectorvp-pc systemd[1]: Starting LSB: saslauthd startup script...
Apr 26 12:04:59 hectorvp-pc saslauthd[11586]: * Starting SASL Authentication Daemon saslauthd
Apr 26 12:04:59 hectorvp-pc saslauthd[11606]: detach_tty : master pid is: 11606
Apr 26 12:04:59 hectorvp-pc saslauthd[11606]: ipc_init : listening on socket: /var/run/saslauthd/mux
Apr 26 12:04:59 hectorvp-pc systemd[1]: Started LSB: saslauthd startup script.
Apr 26 12:04:59 hectorvp-pc saslauthd[11586]: ...done.
如果服务未运行,只需使用service saslauthd start
启动它并再次检查状态(service saslauthd status
)以检查任何可能的上游错误。
您的ldap服务器也可能没有运行或未配置。您可以查看上面的服务状态(service slapd status
)。
请试试这个并告诉我们结果。
编辑(2016年4月26日):通过本回答评论中的对话,我提取了更多步骤。请为答案下面的广泛对话道歉,其摘要如下:
调试saslauthd
服务:如所示here,此服务使用系统日志。在我的情况下(Ubuntu),这些日志位于/var/log/syslog
,但在您的情况下它们可能位于/var/log/messages
。至少默认情况下。在您尝试启动该服务时查看此日志,看看是否有任何错误消息可能会为您提供有关问题的进一步见解。
/var/logs/messages
中出现的错误是:could not bind to socket : /var/run/saslauthd/mux , bind: address already in use
。
我们使用文件命令检查mux
套接字:file /var/run/saslauthd/mux
,输出表明它是一个目录。它应该是socket
。然后我们删除了它并重新启动了服务。现在该服务正常运作。