我对MongoDB和LDAP相当陌生。我正在尝试使用LDAP对mongo进行用户身份验证。这些是我到目前为止已完成的步骤。
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
最佳答案
感谢您的提问。我很喜欢设置环境以尝试重现该错误。您会很高兴听到我认为这不是一个很难解决的问题。但是,我可能花了比我想要的时间更多的时间来设置MongoDB,cyrus-sasl-md5
,设置权限等,而实际上与您的问题没有任何关系,至少乍一看。
您的问题(我有90%的把握)是saslauthd
守护程序未运行或配置不正确。让我们看一下以下内容:
检查service status
。 service saslauthd status
的输出应类似于我的,粘贴在下面。注意一些关键值,例如初始化脚本的位置,在我的情况下为/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
)。请尝试一下,并告诉我们有关结果。
调试
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
。然后我们将其删除并重新启动服务。现在该服务有效。关于java - mongo的LDAP配置抛出权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36800502/