我正在尝试让一些客户端 OS X 机器使用单独的 LDAP Open Directory 服务器自动对 QNAP 共享进行身份验证。
(注意:下面我使用 example.com 来隐藏当前暴露的真实服务器名称)
该网络具有:
运行 Open Directory 的 OSX Server 计算机(例如服务器是 master.example.com)
多台 OSX 客户端计算机使用网络帐户连接并验证服务器。
到目前为止该部分运行良好。
我现在正在添加一个单独的 QNAP NAS 作为文件服务器(参考 TVS-871T),例如名为 server.example.com
我已将 QNAP Nas 配置为在域安全下的控制面板中使用 OSX Server 进行 LDAP 身份验证。
Server: master.example.com
Base DN: dc=master,dc=example,dc=com
Root DN is the Open directory admin: uid=keymaster,dc=master,dc=example,dc=com
Users Base DN is: cn=users,dc=master,dc=example,dc=com
Groups Base DN is: cn=groups,dc=master,dc=example,dc=com
我可以在 QNAP 界面中看到网络用户和组,并授予他们共享访问权限。
我可以从 afp 客户端 (Cmd + K) 手动挂载共享并输入用户名和密码。
到目前为止,一切都很好。
现在的问题是..我试图让所有网络帐户在登录时自动挂载共享。
通常,我会在 OSX 服务器配置文件管理器中将其配置为经过身份验证的网络安装(在安装操作期间自动使用用户的网络帐户进行身份验证)。如果它是开放目录主控本身的共享,则经过测试并且运行良好。
但是,当我尝试在 QNAP 驱动器上自动安装共享时,客户端会弹出身份验证窗口。
好像是说无法登录。即使我重新输入密码,它仍然不想登录。
控制台显示 NetAuthSysAgent 中的错误AFP_OpenSession – Login failed with 80
现在,有趣的是,如果我尝试使用用户的短用户名登录(例如,在本例中为 joesmith),那么它就会登录到共享。
所以基本上,我可以使用用户名进行部分身份验证,但无法实现自动挂载,因为 - 我猜测 - 客户端尝试使用稍微不同的方法(在登录框中显示全名)。
有什么方法可以让它工作吗?我是否缺少 QNAP ldap 配置上的设置才能使其工作?
我是否应该在 QNAP 服务器上配置不同的 LDAP 连接以允许来自 osx 客户端的身份验证系统?
编辑:
我使用 OD 服务器上的 Wireshark 进行了一些挖掘,以查看 QNAP 设备发送了什么(我显然很绝望),我可以看到 QNAP 设备(&(objectClass=posixAccount)(uid=Joe Smith))
对 OD 主机进行了查询,这证实了它发送了错误凭证的假设。
使用 ldapsearch 我也可以复制此操作。如果我将查询从 更改为,uid
则cn
它在命令行上有效。但我不确定我是否可以更改 QNAP 发送其搜索过滤器的方式。
编辑2:
我可以通过编辑让 QNAP 驱动器使用 CN 而不是 uid:
/mnt/HDA_ROOT/.config/nss_ldap.conf
并添加
nss_map_attribute uid cn
對它來說。
然后/etc/init.d/ldap.sh restart
这样我就可以用全名登录了。
然而,这会破坏组 ACL。
再次查看 Wireshark,ldap 身份验证现在也使用 CN 进行组成员身份测试:(&(objectClass=posixGroup)(memberUid=Joe Smith))
如果您授予单个用户共享访问权限,则可以工作,但我想使用组 ACL :(
编辑3:
密码保护似乎有一个名为的选项pam_login_attribute
正是我需要的,但 nss ldap 似乎没有使用它或没有类似的替代方案。