Ubuntu 服务器 + Samba + PAM + Apple OpenDirectory

Ubuntu 服务器 + Samba + PAM + Apple OpenDirectory

由于各种原因,我们希望将文件服务器从 OS X Server 10.9 迁移到在 Ubuntu 14.04LTS 上运行的真正 Samba 实现。我们已安装 Samba 并运行 Ubuntu,甚至还设置了 PAM 以根据 Apple OpenDirectory 服务器对用户进行身份验证。

但是,让 Samba 按照我们想要的方式对用户进行身份验证被证明是相当具有挑战性的。看来我们有两个选择。选项 1 是让 Samba 将此委托给已经正常运行的 PAM 子系统;选项 2 是使用 Samba 对 LDAP 和 Kerberos 的内置支持。Ubuntu 中的现成配置似乎更倾向于选项 1,而且这确实似乎是长期管理最简单的设置。(选项 2 需要进行大量配置,包括修改 Apple 架构,我知道这在实践中不是一个好主意。)

所以,话虽如此,我打算尝试选项1工作,(它几乎做到了)。目前,针对 OD 的 PAM 身份验证已经生效。我可以整天使用 ssh 并以 OD 用户身份登录系统。然而,不好的是,用户必须先这样做,Samba 才会将其识别为 UNIX 用户。换句话说,除非用户至少成功通过 SSH 连接一次,否则 Samba 不会识别他们的凭据。此外,我不相信 Samba 看到了 OD 组,因为尝试根据组名限制与某些共享的连接也不起作用。

一旦用户使用 SSH 登录一次(或尝试使用标准本地用户帐户),Samba 将永远接受他们的姓名和密码。除非发生这种情况,否则它只会拒绝它们。

smb.conf 文件包含以下相关条目:

server role = standalone server
obey pam restrictions = yes
passdb backend = tdbsam
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
guest account = nobody
map to guest = bad user

nsswitch.conf 包含以下相关条目:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

似乎必须以某种方式对这种行为进行简单的修复或变通。使用“getent”、“id”、“groups”和“passwd”等命令可以正确返回我期望的结果和行为。只有smbd 似乎有一些额外需要的东西

我没有找到解决此问题的最佳方法,并且已经花了几天时间仔细阅读文档、网站、O'Reilly 书籍并尝试了这两种方案。我还阅读了这里有类似的帖子。有人遇到过这种情况吗?任何帮助都非常感谢,包括明智的 UNIX 轶事和/或精神支持。

谢谢!

相关内容