我正在试图build立一个为Windows客户端提供一些文件共享的服务器,我希望它能够与我学校已经build立的现有authentication框架进行整合。 有一个Windows LDAP服务器,它包含所有学生的信息 – 我希望Samba根据该服务器进行身份validation,并根据需要授予对共享的访问权限。
我已经查找了指南,但是我所能find的是用于设置我自己的LDAP服务器以供Samba使用的文档。 我的情况有些受限:我没有LDAP服务器的pipe理员权限,我需要使用该服务器,因为我非常希望为我的用户提供一个统一的login(即不必让每个人都保持独立帐户在这台服务器上)。
我已经成功地设置了LDAP,Kerberos,PAM和NSS,以便用户可以通过SSH以他们的LDAP用户名login,但是我不知道如何让Samba执行相同的操作。 我听说Samba使用PAM是不好的,因为这需要禁用密码encryption。 是否有办法在没有任何远程计算机的pipe理权限的情况下设置Samba来针对单独的LDAP(或Kerberos)服务器对用户进行身份validation? (这也意味着将服务器joinActive Directory域几乎是不可能的。)
我相信有必要至less让LDAP服务器上的域pipe理员至lessinput一次密码来完成你想要的任务,并将Sambajoin到域中。
鉴于此,步骤应该相对简单。 从Samba Wiki取得 ,在你的sambaconfiguration中设置如下:
* passdb backend = ldapsam:ldap://<your-hostname> * ldap suffix = * ldap admin dn
然后运行smbpasswd -w让samba知道admin dn的密码。
这里也有一个很好的写法。
Samba需要LDAP树中的自定义属性和对象来存储Windows密码散列和其他数据,如密码过期。 samba源码分发中有一个samba.schema文件。 Debian使用samba-doc 。
作为samba服务器上的工具,我会推荐smbldap-tools 。 他们提供了大量的示例configuration文件,可以很容易地适应本地设置。 使用它们,您甚至可以通过Windows为您的用户启用密码更改。
真正的问题将是如何创build所需的密码哈希值的方式。 它们只能从原始明文密码生成,并且在更改密码时必须保留。
Doug Wilson有一篇关于在Kerberos和Active Directory中validationsamba客户端的文章