Linux smb/cifs 服务器(例如 samba)上无需 sambaSamAccount 的 ldap 身份验证

Linux smb/cifs 服务器(例如 samba)上无需 sambaSamAccount 的 ldap 身份验证

我目前在 debian/wheezy 主机上运行 samba-3.5.6,作为我们部门 w32 客户端的文件服务器。身份验证通过 OpenLDAP 完成,其中每个用户 dn 都有一个 objectclass:sambaSamAccount 用于保存 smb 凭据,以及一个 objectclass:shadowAccount/posixAccount 用于“普通”身份验证(例如 pam、apache……)

现在,我们想转储我们部门的用户数据库,而是使用针对我们上游组织的用户数据库进行身份验证。这些用户帐户在 novell-edirectory 中进行管理,我已经可以使用它来使用 pam 进行身份验证(例如,在另一台主机上进行 ssh-logins)。我们的上游组织提供基于 smb/cifs 的访问(通过某些 novell 服务)到某些目录,我可以通过从我的 linux 客户端访问这些目录smbclient

我目前无法做的是使用上游 ldap (eDirectory) 来验证我们机构的 samba:

我将我的 samba 服务器配置为针对上游 ldap 服务器进行身份验证:

passdb backend = ldapsam:ldaps://ldap.example.com

但是当我尝试验证用户身份时,我得到:

$ smbclient -U USER \\\\SMBSERVER\\test
Enter USER's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]
tree connect failed: NT_STATUS_ACCESS_DENIED

日志文件显示:

[2012/10/02 09:53:47.692987,  0] passdb/secrets.c:350(fetch_ldap_pw)
  fetch_ldap_pw: neither ldap secret retrieved!
[2012/10/02 09:53:47.693131,  0] lib/smbldap.c:1180(smbldap_connect_system)
  ldap_connect_system: Failed to retrieve password from secrets.tdb

我发现我遇到了两个问题:

  • 我没有上游 ldap 的任何管理员密码(而且很可能他们也不会给我)。我只想验证我的用户,根本不需要写访问权限。我可以不用管它吗?

  • 上游 ldap 在数据库中没有任何与 samba 相关的属性。我的印象是,对于 samba 进行身份验证,这些属性是必需的,因为 smb/cifs 使用了一些与通常的 posixAccount 哈希不兼容的简单哈希。

我部门的 samba 服务器有办法针对这样的 ldap 服务器进行身份验证吗?

答案1

您需要在 samba 中设置 ldap 密码。(例如,如果您的 admindn 是针对用户 admin 的)

smbpasswd -w admin

相关内容