两台 Ubuntu 14.04 机器,A 和 B,通过本地路由器有线连接,配置完全相同。它们的 smb.conf 文件除了共享路径名外完全相同,声明如下:
workgroup = WORKGROUP
wins support = yes
name resolve order = wins bcast host
所有媒体在 smb.conf 中声明为:
read only = No
guest ok = Yes
并且所有媒体都配置为可共享并“允许其他人创建和删除......”。
使用文件,A 可以看到工作组并访问 B 的共享资源,但是B 无法看到 A 的 WORKGROUP 共享工作组上的其他任何机器共享也是如此。同一网络上的 Windows 机器可以看到两台机器上的共享资源(但不能访问它们 - 不接受密码??)。所有防火墙(A、B 和本地路由器)都已关闭。
一个可能的线索:在 B 上,ping A
找不到 A 的正确本地 IP 地址,并从以前的网络配置中 ping 一个 A 的旧地址;在 A 上,ping B
工作正常。A 和 B 上的 arp 表基本相似;B 具有 A 的正确本地地址。B 从哪里获取名为 A 的本地计算机的 ping IP 地址?
是否有一些网络配置清单可用于查明这里发生了什么?两台机器上的共享在 12.04 上运行良好,最近在安装新路由器的同时切换到 14.04(B 已升级,但 A 是全新安装)。
任何建议,将不胜感激。
答案1
问题在于 A 没有配置 Samba 用户,而 B 有。因此,B 知道 A 的用户并自动接受,但 A 不知道 B 用户。事实上,A 没有已知用户(可能是因为它是 14.04 的新安装,而 B 是升级版),所以 A 既不显示其共享资源,也不允许访问。smb.conf 中没有配置用户,所以我错过了这两台机器之间的这种不对称。
使用 Samba 服务器配置 GUI 可以很容易地解决这个问题;优先菜单包括Samba 用户项目和窗口添加具有网络密码的新用户。这会将用户名添加到 (/etc/samba/smbusers
B 上之前不存在的文件)中。
我认为用户名和密码在每台共享的机器上都应该相同——至少对我来说是这样。我相信有一种方法可以拥有一个网络用户文件,而不是在每台机器上都有一个——总有一天我会找到办法的。