我尝试使用 Ubuntu 客户端 (20.04) 通过 Nautilus 访问 NAS 上的 Samba 共享。但只有当我在服务器上启用 SMB1 时,Nautilus 才会看到 Samba 共享。为什么 Nautilus 使用的是 SMB1?我想强制 Nautilus 使用更高的 Samba 版本。我该怎么做?
答案1
我读到您的帖子的方式是:服务器 (NAS) 未启用 SMB1。Ubuntu 客户端无法获取该服务器的共享枚举,直到您在服务器上启用 SMB1。
那是对的吗?
如果是这样,那么这是一个错误。
Ubuntu 20 中的 samba 客户端默认可以从 SMB2.02 一直升级到 SMB3.11,因此它已经能够连接到更高级方言的服务器。
问题在于 gvfsd-smb-browse 中的一个错误,它被硬连线为在 SMB1 上扫描网络,但随后卡在那里。但这仅在您浏览网络中的 samba 主机时发生。解决此问题的唯一方法是绕过 gvfsd-smb-browse:
您可以通过 Nautilus 请求服务器并在位置栏中明确共享或使用“连接到服务器”来执行此操作:
smb://nas-hostname/share-name
或者
smb://nas-home-name.local/share-name
或者
smb://nas-ip-address/share-name
或者执行 mount.cifs 挂载,默认情况下也从 SMB2 转到 SMB3,但不使用 gvfsd-smb-browse:
我建议在 /media 下创建一个挂载点(比如说 /media/nas-share ),原因如下:
确保已安装 cifs-utils:sudo apt install cifs-utils
如果您的 nas 允许访客访问:
sudo mount -t cifs //nas-ip-address/nas-share /media/nas-share cifs guest,uid=marc
如果您的 nas 需要凭证:
sudo mount -t cifs //nas-ip-address/nas-share /media/nas-share cifs username=XXXXX,password=YYYYY,uid=marc
这是uid=marc该选项用 marc 替换 root 作为已挂载共享的所有者,以便他具有读/写访问权限。
一旦成功,您就可以在 /etc/fstab 中添加一个条目,这样您就可以通过 Nautilus 根据需要进行挂载,而不必进行终端挂载。因此,在 fstab 中它看起来应该像这样:
//nas-ip-address/nas-share /media/nas-share cifs username=XXXXX,pasword=YYYYY,uid=marc,noauto,user 0 0
禁止自动= 使其不会在启动时自动安装。
用户= 允许普通用户(非 sudo )挂载共享。
由于共享安装在 /media 下,Nautilus 的侧面板上会出现一个图标,选择后将根据 fstab 中的说明安装该共享。稍后可以使用同一个图标卸载共享。
答案2
不确定这是否有帮助,但在服务器大小上,WS-discovery 是否已激活?在我的 Synology 服务器上,我必须转到控制面板/文件服务/高级来激活它(列表中的最后一个选项)。