我正在使用 Samba 设置一个具有文件共享功能的家庭服务器。它有 XUbuntu 15.10。Samba默认
使用 中指定的密码。但是,我希望 Samba 使用 中的用户和 中的密码。 我设法在 Google 上找到了很多使用 的手册,但我不理解它们,也不知道这是否是一种好方法。shares-admin
/etc/passwd
/etc/shadow
/etc/pam.d/samba
这样做正确吗?如果正确,那么我应该写什么/etc/pam.d/samba
?如果不正确,正确的方法是什么?
答案1
总结:有不正确的方法。
桑巴做默认使用 /etc/passwd 中的账户 - 它将获取 UID、主目录等。但是,它不能使用 /etc/shadow,因为它没有足够的信息用于 SMB 登录。
要通过 PAM(或 /etc/shadow)进行身份验证,服务器必须接收纯文本密码,然后将其提供给 pam_unix、进行哈希处理并比较哈希值。这不适用于 SMB。
在工作组系统上,SMB 始终使用 NTLMv2 协议,该协议需要了解密码的“NT 哈希”(无盐 MD4);不可能从 /etc/passwd 中包含的哈希中推导出该哈希,反之亦然。
Samba 使用 PAM 的唯一原因是授权(访问控制)、会话设置(SELinux、日志记录……)和远程密码改变使用smbpasswd
。
答案2
我认为 Grawity 所说的一切都是正确的。但我认为,只有将加密密码设置为 no 时,才能将 /etc/shadow 与 pam_unix 一起使用:
encrypt passwords = no;
然后更改 Windows 上的注册表以使其不对密码进行哈希处理。