我正在尝试使用现有的 LDAP 服务器作为身份验证后端在 Ubuntu 19.04 系统上设置 Samba 文件共享。
我所拥有的:一个功能齐全的 OpenLDAP 服务器,其中包含所有用户和组信息
我想要的是:Samba 文件共享使用此数据来验证用户并为(通用)文件共享提供特定于组的权限。
如果我理解正确的话(例如基于这个答案),Samba 无法执行绑定身份验证,而大多数应用程序都提供绑定身份验证选项。因此,我需要 PAM 来使用我的 LDAP 服务器作为后端,然后使用 PAM 进行 Samba 身份验证。
我尝试遵循Ubuntu 教程,但无法为 NSS 配置 LDAP 配置文件,因为auth-client-config
找不到命令;即使我安装了该ldap-auth-config
软件包。
为什么没有办法让 Samba 像其他服务一样通过尝试登录来执行绑定身份验证?我走的路对吗?如果 Samba 使用存储在 -Attribute 中的 NTLM-Hash sambaNTPassword
,与我在属性中使用的加盐 SHA2-Hash 相比,这难道不会大大降低我的安全性userPassword
吗?
编辑:我只需要 Samba 充当文件共享服务器,而不是活动目录。如果可能的话,我的用户只能使用当前存储在 LDAP 目录 (和)
中的凭据登录文件共享/网络驱动器。uid
userPassword
答案1
以防其他人在 Google 上找到这些答案。有一个重要的警告。您无法设置 Samba 共享并让其使用您现有的 OpenLDAP。这绝对不可能做到,任何告诉您其他情况的人都是在误导您。您必须使用 Samba 的独立 LDAP,这意味着您现在必须维护两个完全不同的用户数据库。或者您必须使用弃用格式的 Samba,并且仍然必须为所有 OpenLDAP 用户添加 Samba 密码和 ID。或者,您必须针对 Windows AD 环境对其进行身份验证。所有这些都是极其无益的,并且是 Samba 程序员人为提出的要求。事实证明,Netapp 设备具有可以完全针对您的正常 UID、UIDNumber 和 LDAP 密码进行身份验证的 Windows 共享。根本不需要设置 Samba。但是 Samba 人员做了他们所做的,现在人们必须忍受它。
答案2
这个问题已经回答过好几次了。AD 模式下的 Samba 4 无法使用 LDAP 作为后端:
https://wiki.samba.org/index.php/Samba4/LDAP_Backend
Windows 服务的某些部分无法用标准 LDAP 进行模拟,因此 samba 开发人员实现了他们自己的 LDAP 解决方案。
但是,您可以将其配置为 PDC,但这是遗留的,并且很难使用当前的 Windows 客户端进行维护和管理:
https://wiki.samba.org/index.php/Required_Settings_for_Samba_NT4_Domains
还有其他项目(例如 UCS)尝试同步 LDAP:
但他们需要使用整个解决方案,我希望他们能有一个可以配置任何后端的连接器。
所以你必须决定哪种解决方案最适合你的环境。