解决 Win10 / 11 客户机无法访问 linux Samba 服务器的问题
samba 是 Linux 下 SMB 协议实现的套件,用于 Windows 与 Linux 下文件共享。但是默认配置下 samba 配置好后,Windows 7 下可以正常访问,Windows 10 及以上系统却无法正常访问,给新手带来了一些麻烦,本文将讲诉解决方案。
原因:
Windows 10 及以上系统 SMB 客户端有一条安全规则,默认禁止不安全的 Lanmam 工作站登录(即不允许 guest 登录),保障 SMB 安全。Linux 下 samba 的默认配置是,用户登陆失败后映射到 guest 账户。
Windows 系统访问 SMB 时,首先尝试 用 guest (来宾)账户 登录 samba 服务器,guest 无法登录时才弹出输入用户名和密码窗口。 Linux 下 samba 配置默认允许 guest 登录,所以 samba 服务器支持以 guest 用户登录,但由于 Windows 10 及以上系统“默认禁止不安全的 Lanmam 工作站登录”(禁用以 guest 用户身份登录)的默认规则存在,Windows 10 无法回退至使用 guest 账户登录,故访问失败。
表现如下:

如果尝试用 net use 命令映射共享,提示如下:

解决方案:
既然知道了本质原因,就有解决方案,解决方案有以下两种。
1、samba 服务器禁用 guest 登录(推荐)
修改 samba 服务器配置
# sudo vim /etc/samba/smb.conf
找到以下行:
map to guest = bad user
改为:
map to guest = never
保存后,输入以下命令重启 samba 服务器
sudo systemctl restart smbd
重启 samba 服务器后,重启 Windows 客户机电脑。重启 Windows 客户机后,尝试访问 samba 服务器,会弹出提示“输入网络凭据”的界面。输入你在 samba 中的用户名及密码,即可访问成功。

2、Windows 允许以 guest 身份登录(不安全)
此方案会降低安全性,故不推荐使用此方法。仅当需要无密码匿名访问 SMB 时,才使用此方案。通过此方案解决有两种方法。
A)修改注册表法:
1)打开记事本
按键盘 Windows 徽标键 + R 键,在文本框输入 notepad,点击“确定”。

2)将以下内容复制粘贴到记事本里后,点击 “文件” -> “保存”
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"AllowInsecureGuestAuth"=dword:1

3)保存文件名为 “allowinsecureguestauth.reg”(其实只需要后缀为 .reg)的文件即可。切记“保存类型”要选择“所有文件”。

4)双击打开你刚才保存的文件

5)在这个弹出窗口中点击 “是”,导入完成。

6)访问 samba 服务器,弹出“输入用户凭据”窗口。

请输入你的 samba 用户名和密码,点击确定即可访问。
若需要匿名访问,用户名输入 guest,密码空置,点击“确定”,即成功以 guest 来宾账户访问成功。

B)修改组策略法:
该方法适合企业带域网络的计算机批量设置,Windows 家庭版不支持组策略,故无法使用该方法。
1)打开组策略
按键盘 Windows 徽标键 + R 键,在文本框输入 gpedit.msc,点击“确定”。

2)在左侧点击 计算机配置 -> 管理模板 -> 网络 -> Lanman 工作站 后,在右侧双击“启用不安全的来宾登录”。

3)在弹出窗口中的单选框点击“已启用”,然后点击“确定”按钮。

4)组策略设置完成。关闭“本地组策略管理器”窗口。
5)打开开始菜单,找到 Windows 系统 -> 命令提示符,右击 命令提示符 -> 更多 -> 以管理员身份运行。

6)在接下来的 UAC 弹窗中点击“是”。
7)在“管理员:命令提示符”窗口中输入 gpupdate /force,回车。

8)访问 samba 服务器,弹出“输入用户凭据”窗口。

请输入你的 samba 用户名和密码,点击确定即可访问。
若需要匿名访问,用户名输入 guest,密码空置,点击“确定”,即成功以 guest 来宾账户访问成功。

异客居 » 解决 Win10 / 11 客户机无法访问 linux Samba 服务器的问题