Samba+Windows:允许不同用户进行多个连接?

26 networking windows samba user-accounts network-shares

我有一台运行带有 Samba 的 Ubuntu 的机器,我用它来与我们本地网络中我家人的 Windows 机器共享内容。目前,他们与一个用户共享电影/音乐/等。

我想将它们作为不同的用户(例如,用户“goytacaz”)连接到另一个共享。

当我尝试连接到这个新共享时,Windows 给我“错误 1219”并抱怨同一用户有多个连接。

如何让我的机器接受同一用户的多个连接?

qua*_*ote 27

桑巴?应该没有任何问题;只要用户名和密码正确,两个连接都应该正确发生。

更新:回复:“错误 1219”。这是一个客户端错误——Windows 一次只允许您以一个用户的身份连接到服务器。(请参阅KB938120 上的 Microsoft 文档。)这意味着 Windows 计算机已经以不同的用户身份连接,因此您尝试以正确的用户身份再次连接失败。

您需要先断开第一个连接,然后才能重新连接。我知道有两种方法可以做到这一点:

  • 断开所有登录时重新连接网络驱动器与该服务器的连接。重启。重新连接到服务器并确保提供正确的用户名和密码。

  • 使用Windows 命令外壳中的net use /delete命令(开始 -> 运行 -> cmd;在提示符下键入命令;您可能需要指定共享名)。

更新 2:如果用户已经与一个用户连接到服务器,您将无法让他们与第二个用户连接。您必须重新考虑您的共享策略,并重新配置 Samba 以遵循该策略。(这不是你的错;我责怪 Windows。)

就个人而言,我会坚持使用每个人的个人用户,并考虑使用组来控制对共享的访问。如果您有一些共享希望每个人都具有读写访问权限,而另一些共享则希望对除少数用户之外的所有用户都只读。

更新 3:上面链接的 MS 文档提供了这两种解决方法,以便能够以单独的用户身份连接到服务器。一般的想法是,让 Windows 认为它​​通过使用不同的 name 连接到不同的服务器

  1. 使用第二个用户名连接时,请使用服务器的 IP 地址。(\\ServerName\sharename作为第一个用户\\X.X.X.X\sharename连接时使用,但作为第二个用户连接时使用。)

  2. 为服务器创建一个或多个 DNS 别名,以便在您使用第二个(、第三个、第四个...)用户名连接时使用。(\\ServerName\sharename作为第一个用户\\ServerAlias1\sharename连接时使用,但作为第二个用户\\ServerAlias2\sharename连接时使用,作为第三个用户连接时使用,等等)


Seb*_*ian 10

这是 Windows 7 的解决方案(尽管它也可能适用于其他版本)

  1. 以管理员身份打开记事本(或任何文本编辑器)
    (您必须右键单击并说“以管理员身份运行”)

  2. 查找:c:\WINDOWS\system32\drivers\etc\hosts(您需要显示所有文件,而不仅仅是 .txt)

现在,如果 ie:
- 你有 3 个 samba 用户:tom fred jon
- 在你的 samba 服务器上有 3 个 samba 共享(即 IP:192.168.0.100):docs stuff pics
- 你想以 tom 的身份连接到 docs,作为 fred 连接到 stuff 和作为乔恩到照片

现在将以下行添加到主机文件中:

192.168.0.100   tomsdocs   tomsdocs
192.168.0.100   fredstuff  fredstuff
192.168.0.100   jonspics   jonspics
Run Code Online (Sandbox Code Playgroud)

关闭并保存后,您可以像这样“映射网络驱动器”:

\\tomsdocs\docs as user tom
\\fredstuff\stuff as user fred
\\jonspics\pics as user jon
Run Code Online (Sandbox Code Playgroud)

请注意,上面的名称完全由您决定......无论您放入主机文件中,都需要在映射网络驱动器时匹配您所称的服务器。

这样做的原因是因为 Windows 需要认为它正在连接到不同的服务器。可以说,您也可以设置自己的家庭 DNS 服务器,但我更喜欢在主机文件中伪造一堆条目(在您的 Windows 机器向 DNS 寻求帮助之前对其进行评估)。
由于整个问题是客户端 Windows 问题,我更喜欢这样做。

希望这可以帮助。


小智 8

如果您不想为解决服务器问题而摆弄每个客户端,则可以使用 smb.conf 文件为服务器设置名称别名。这具有每个别名在 Windows 网络中显示为不同服务器的额外好处。

编辑您的 smb.conf 文件并在 [global] 部分添加以下条目:

[global]
...
netbios aliases = alias1 alias2 readonly
Run Code Online (Sandbox Code Playgroud)


重新启动 samba(记住重新启动 smbd 和 nmbd!)后,您应该能够在 Windows 资源管理器中使用 UNC 表示法访问新的服务器别名。
请注意,在 samba 重新启动后大约 1 分钟,在我的站点上,它们可能需要一些时间才能工作。
一旦别名出现在 Windows 网络中,您就可以开始使用了。