首先,我对 Linux 和 Samba 还很陌生。
我刚刚设置了一个基本的 Ubuntu Server 9.10 家庭服务器。我将几个目录设置为 Samba 共享。我在 Ubuntu 服务器上只有一个登录名,我们称之为鲍勃多尔.我做到了不是但是设置任何 Samba 特定用户(使用 smbpasswd)。
现在在 Windows XP 中,我使用名为 xplorer2 的第三方 Windows 资源管理器软件。我喜欢它,因为它比 Windows 资源管理器好得多。无论如何,当我转到 xplorer2 中的共享时,它当然会要求我输入用户名和密码。我输入鲍勃多尔和密码,它让我进去了。现在记住,这个鲍勃多尔不是我设置的 Samba 用户。这是我登录 Ubuntu 服务器的用户名。
到目前为止我有点困惑。为什么 Ubuntu 服务器允许我使用我的系统用户名 (鲍勃多尔) 登录到 Samba 共享?
过了一会儿,我使用普通的 Windows 资源管理器,在访问共享时,它再次要求输入我的用户名/密码。我使用了鲍勃多尔再次......但它不让我进去。经过一番调查后,我开始发现这就是为什么我需要为共享设置特定的 Samba 登录。
我的问题是:
此 explorer2 软件如何使用我服务器的系统用户名而不是实际的 Samba 特定用户名登录 Samba 共享?为什么普通的 Windows 资源管理器不做同样的事情?
我是否需要设置 Samba 特定用户?(我认为是的,但是这种奇怪的行为让我产生了怀疑)。
答案1
欢迎来到 Samba 的奇妙世界!我已经使用它很多年了,它非常值得学习。不过,学习起来有点困难。我强烈建议你熟悉你的/etc/samba/smb.conf和smb.conf(5) 手册页,并保持Samba 操作方法集链接很方便。这些是有关如何配置服务器及其含义的最佳资源。
首先,您需要了解 Windows XP 如何连接服务器。在 Windows 中,一旦您使用一个用户名与某个服务器建立连接,就无法使用不同的用户名与同一服务器建立另一个连接。(同时,Windows 根据您如何寻址服务器来识别这些连接,因此虽然\\ServerName
和\\X.X.X.X
是同一台机器,但对 Windows 而言,它们是不同的连接。)
其次,您需要了解一些有关 Samba 和来宾访问的知识。Samba 可以配置为允许任何身份验证失败的用户进行来宾访问。在此配置下,如果您尝试从 Windows 登录,并且登录失败由于某种原因(例如,Samba 无法识别用户名),Samba 将以访客帐户权限建立连接。
由于 Ubuntu 已预先配置为易于访问,因此它使用指令map to guest = bad user
自动允许未知用户的访客访问。它还允许访客访问通过 GUI 创建的公共共享(指令usershare allow guests = yes
)。我思考Ubuntu 默认使用 PAM 进行用户身份验证——默认服务器配置使用encrypt passwords = no
,这意味着passdb backend = tdbsam
实际上并未使用。
因此,回答你的问题:
您登录的原因可能是 Samba 通过 PAM 向您的 unix 帐户验证您的身份,也可能是它根本无法识别用户名并将您映射到来宾帐户。至于 Win Explorer 失败的原因,我只能推测。我最好的猜测是它认为您正在尝试以其他用户身份连接(您看到了吗错误 1219?)。
不是,也是。对于 Samba 无法识别的用户,系统会自动提供访客访问权限;使用未加密的密码,使用 PAM,因此我认为您的 Unix 帐户会被自动识别;但如果您想要加密的 SMB 身份验证,则需要在数据库中创建 Samba 用户和密码
tdbsam
。