无法从 Ubuntu 16.04 LTS 访问 Windows 10 Share

dud*_*ude 10 windows-10 sharing ubuntu-16.04

我正在尝试将我的 Ubuntu 16.04 LTS VM 上的一个点连接/挂载到主机上的共享,该主机是 Windows 10,但没有成功。目标是让我可以在 Ubuntu(VM) 上下载文件并将它们传输到 Windows 主机。Windows 共享可以从同一网络上的其他 Windows 主机访问,但不能从 Ubuntu VM 访问,即使我可以 ping 有网络连接(VM 配置为“桥接”模式)。我试过运行:

sudo mount -t cifs -o username=username //ip_address/Windows_Share /mount/point/Ubuntu
Run Code Online (Sandbox Code Playgroud)

这会返回一个错误指示,表明主机已关闭,这是不正确的,因为其他 Windows 机器可以访问在其上运行的共享。我已经阅读了一些关于它的帖子,有人提到与 Ubuntu 和 Windows 10 使用的 SMB 版本存在冲突,后者现在禁用了 SMB1。因此,他们建议运行以下命令进行检查:

smbclient -L <windows_ip> -U <windows_user> -d 256
Run Code Online (Sandbox Code Playgroud)

事实上我有一个错误:

协议协商失败:NT_STATUS_CONNECTION_RESET

然后我运行:

smbclient -L <windows_ip> -U <windows_user> -m SMB2
Run Code Online (Sandbox Code Playgroud)

还有一个错误:

禁用 TCP 上的 NetBIOS -- 没有可用的工作组

任何人都可以建议修复/建议我如何在 Ubuntu 上安装 Windows 共享?

小智 14

听起来你是在正确的轨道上。如果问题与 SMB1 相关,以下内容将解决您的问题。

首先复制一份smb.conf

cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
Run Code Online (Sandbox Code Playgroud)

制作副本后

sudo gedit /etc/samba/smb.conf
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢 gedit,请随意使用 vi/vim/nano

在文件中,在 [global] 部分添加以下内容

client min protocol = SMB2
client max protocol = SMB3
Run Code Online (Sandbox Code Playgroud)

将编辑保存到文件后。重启中小企业

sudo service smbd restart
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请包含错误。


dud*_*ude 9

好的,很抱歉这么晚才回来。修复基本上是这样的:

sudo mount -o vers=3.0,username=<your_username>,uid=<your_user_id>,gid=<your_group_id>,forceuid,forcegid, //<ip_address>/<path_to_share> /<mount>/<point>/<local_system>
Run Code Online (Sandbox Code Playgroud)

请注意,这次我跳过了“-t(--type)”选项,因为如果未指定此选项,“mount”将尝试猜测要使用的系统,老实说,考虑到我的阅读量已经完成了 Windows 10 共享协议的工作,我选择让“挂载”为我发挥它的魔力。;-)

这里是“挂载手册页”的摘录:

“如果没有给出 -t 选项,或者如果指定了自动类型,mount 将尝试猜测所需的类型。Mount 使用 blkid 库来猜测文件系统类型;如果没有出现任何看起来熟悉的东西,mount 将尝试读取文件 /etc/filesystems,或者,如果它不存在,则读取 /proc/filesystems。将尝试在那里列出的所有文件系统类型,除了标记为“nodev”的那些(例如,devpts、 proc 和 nfs)。如果 /etc/filesystems 以单个 * 结尾,mount 将随后读取 /proc/filesystems。尝试时,所有文件系统类型都将使用挂载选项静默挂载。”

此外,由于“mount”只能以 root 身份运行,但写入此挂载点的其他程序不能以 root 身份运行,因此您需要指定要授予挂载写入权限(所有权)的用户和组位置,因此使用:uid=<your_user_id>,gid=<your_group_id>,forceuid,forcegid,

完毕!@xguru,感谢您的帮助!:)