使用 Open Directory 自动验证 QNAP NAS 上的共享

使用 Open Directory 自动验证 QNAP NAS 上的共享

我正在尝试让一些客户端 OS X 机器使用单独的 LDAP Open Directory 服务器自动对 QNAP 共享进行身份验证。

(注意:下面我使用 example.com 来隐藏当前暴露的真实服务器名称)

该网络具有:

  1. 运行 Open Directory 的 OSX Server 计算机(例如服务器是 master.example.com)

  2. 多台 OSX 客户端计算机使用网络帐户连接并验证服务器。

到目前为止该部分运行良好。

我现在正在添加一个单独的 QNAP NAS 作为文件服务器(参考 TVS-871T),例如名为 server.example.com

我已将 QNAP Nas 配置为在域安全下的控制面板中使用 OSX Server 进行 LDAP 身份验证。

QNAP 中的 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 我也可以复制此操作。如果我将查询从 更改为,uidcn它在命令行上有效。但我不确定我是否可以更改 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 似乎没有使用它或没有类似的替代方案。

相关内容