mongo的LDAP配置抛出权限被拒绝

Gur*_*kha 5 java security authentication ldap mongodb

我是MongoDB和LDAP的新手.我正在尝试使用LDAP来验证用户mongo.这些是我到目前为止所做的步骤.

  1. 在/ etc文件夹中创建了一个saslauthd.conf文件,其中包含以下行:
ldap_servers: ldap://com.myldap.server
ldap_use_sasl: yes
ldap_mech: DIGEST-MD5
ldap_auth_method: fastbind
Run Code Online (Sandbox Code Playgroud)
  1. mux里面创建了一个/var/run/saslauthd现在看起来像的目录/var/run/saslauthd/mux
  2. 使用权限将权限设置为755 sudo chmod 755 /var/run/saslauthd

  3. 修改/etc/sysconfig/saslauthd了以下内容

MECH=ldap

  1. 取消注释同一文件中的行说:

DAEMONOPTS=--user saslauth

现在,当我尝试使用以下命令测试身份验证机制时:

testsaslauthd -u username -p password -f /var/run/saslauthd/mux

我收到以下消息:

connect(): Permission Denied

我的工作是基于这个, 可以有人指出我在这里缺少什么?提前致谢.

更新:

我试过sudo下面的测试命令:

sudo testsaslauthd -u username -p password -f /var/run/saslauthd/mux

我得到以下内容:

connect() : Connection refused

Héc*_*eja 2

谢谢你的提问。我很喜欢设置我的环境来尝试重现错误。你会很高兴听到我不认为这是一个难以克服的问题。然而,我在设置 MongoDB 上花费的时间可能比我预期的要多,cyrus-sasl-md5设置权限等,而实际上没有任何内容与您的问题相关,至少乍一看是这样。

\n\n

你的问题(我90%确定)要么是你的saslauthd守护进程没有运行或者没有正确配置。我们来看看以下内容:

\n\n

检查service status。的输出service saslauthd status应该与我的类似,粘贴在下面。请注意一些关键值,例如 init 脚本的位置(/etc/init.d/saslauthd/在我的例子中);和套接字,/var/run/saslauthd/mux您需要放入的相同文件位置testsaslauthd [...] -f /var/run/saslauthd/mux命令的文件位置相同。

\n\n
root@hectorvp-pc:~# service saslauthd status                                                                                                                   \n\xe2\x97\x8f saslauthd.service - LSB: saslauthd startup script\n   Loaded: loaded (/etc/init.d/saslauthd)\n   Active: active (running) since Tue 2016-04-26 12:04:59 BST; 1s ago\n     Docs: man:systemd-sysv-generator(8)\n  Process: 11569 ExecStop=/etc/init.d/saslauthd stop (code=exited, status=0/SUCCESS)\n  Process: 11586 ExecStart=/etc/init.d/saslauthd start (code=exited, status=0/SUCCESS)\n   Memory: 2.0M\n   CGroup: /system.slice/saslauthd.service\n           \xe2\x94\x9c\xe2\x94\x8011606 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5\n           \xe2\x94\x9c\xe2\x94\x8011607 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5\n           \xe2\x94\x9c\xe2\x94\x8011608 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5\n           \xe2\x94\x9c\xe2\x94\x8011609 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5\n           \xe2\x94\x94\xe2\x94\x8011610 /usr/sbin/saslauthd -a ldap -c -m /var/run/saslauthd -n 5\n\nApr 26 12:04:59 hectorvp-pc systemd[1]: Starting LSB: saslauthd startup script...\nApr 26 12:04:59 hectorvp-pc saslauthd[11586]: * Starting SASL Authentication Daemon saslauthd\nApr 26 12:04:59 hectorvp-pc saslauthd[11606]: detach_tty      : master pid is: 11606\nApr 26 12:04:59 hectorvp-pc saslauthd[11606]: ipc_init        : listening on socket: /var/run/saslauthd/mux\nApr 26 12:04:59 hectorvp-pc systemd[1]: Started LSB: saslauthd startup script.\nApr 26 12:04:59 hectorvp-pc saslauthd[11586]: ...done.\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果服务没有运行,只需启动它service saslauthd start并再次检查状态(service saslauthd status ) 以检查任何可能的上游错误。

\n\n

您的 LDAP 服务器也可能未运行或配置错误。您可以查看上面的服务状态(service slapd status)。

\n\n

请尝试一下并告诉我们结果。

\n\n
\n

编辑(2016年4月26日):从这个答案的评论中的对话中,我提取了更多步骤。请对答案下面的广泛对话表示歉意,总结如下:

\n
\n\n

调试saslauthd服务:如此处所示该服务使用系统日志。在我的例子(Ubuntu)中,这些日志在,但在你的例子中/var/log/syslog可能也有。/var/log/messages至少默认情况下是这样。在尝试启动服务时查看此日志,看看是否看到任何错误消息,这可能会让您进一步了解问题所在。

\n\n

出现的错误/var/logs/messages是:could not bind to socket : /var/run/saslauthd/mux , bind: address already in use

\n\n

我们mux使用 file 命令检查了套接字:file /var/run/saslauthd/mux输出显示它是一个目录。它应该是一个socket. 然后我们将其删除并重新启动服务。现在服务正常了。

\n

  • 是的!!我认为我们非常接近。它不应该是一个“目录”。删除它,是的,使用“rm -fr /var/run/saslauthd/mux”删除它,然后直接重新启动服务(“service saslauthd restart”)。我想我们到这里就结束了。 (2认同)