我目前在 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