我有一台 Windows 10 机器(最新更新于 2016-10-10),它绝对拒绝访问 Linux(Raspbian - Debian 衍生产品)服务器上的公共 Samba 共享,除非在 Windows 中预先输入凭据。
Windows 10 客户端
IP 地址:10.0.0.184
不在域中。
Raspbian(Debian)Samba 服务器:
IP 地址:10.0.0.2
不在域中。
smb.conf:
[global]
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = share
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
[public]
path = /home/public
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes
IT 应该 100% 简单且直接,对吗?
场景:
从 Windows 10 机器上,我尝试访问 Samba 服务器:
\\10.0.0.2
我收到以下错误消息:
\\10.0.0.2 is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions.
A specified login session does not exist. It may already have been terminated.
相当虚假,而且完全荒谬。
Samba 日志显示:
[2016/10/14 19:10:55.209107, 0] smbd/service.c:995(make_connection_snum)
Can't become connected user!
因此,由于我过去在 Windows 文件共享方面有很多不好的经历(或多或少),所以我在 Windows 10 中打开了凭据管理器。在那里,我在 Windows 凭据下插入以下新条目:
互联网或网络地址:10.0.0.2
用户名:pi
密码:[正确的密码]
现在,当我尝试使用 \10.0.0.2 访问 Samba 服务器时,将打开一个资源管理器窗口,其中显示“公共”文件夹,符合smb.conf
文件规范。
当我尝试打开(公共)共享时,我可以打开它、保存和删除文件等。(如果我尝试创建一个新文件夹,则会在一秒钟内创建五个新文件夹,但这是另一天的问题。)
但是,这完全违背了公共共享的初衷,因为我必须在凭据管理器中输入有效的凭据才能使其工作。如果没有凭据,不仅共享不起作用,而且 Windows 甚至无法连接到服务器。
有人有什么想法吗?这只是 Windows 10 中文件共享的几个问题之一,但如果我让它工作,也许其他一些问题也会在此过程中得到解决。
因为我喜欢折磨自己,浪费生命中的几个小时,所以我卸载并清除了 Samba,重新启动(是的,我知道),然后重新安装。然后我从默认文件中删除了所有共享,只添加了以下内容:
[share_name]
browseable = yes
path = /home/public
guest ok = yes
read only = no
create mask = 777
现在,无论凭据管理器中是否存储了(不必要的)凭据,我都可以访问 Samba 服务器,但会出现相同的错误:
\\10.0.0.2 is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions.
A specified login session does not exist. It may already have been terminated.
文件内容如下log.smbd
:
[2016/10/14 21:06:27.956914, 0] lib/util_sock.c:605(open_socket_in)
open_socket_in(): socket() call failed: Address family not supported by protocol
[2016/10/14 21:06:27.958765, 0] smbd/server.c:578(smbd_open_one_socket)
smbd_open_once_socket: open_socket_in: Address family not supported by protocol
[2016/10/14 21:06:27.997747, 0] printing/print_cups.c:110(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2016/10/14 21:06:28.011317, 0] lib/util_sock.c:605(open_socket_in)
open_socket_in(): socket() call failed: Address family not supported by protocol
[2016/10/14 21:06:28.012127, 0] smbd/server.c:578(smbd_open_one_socket)
smbd_open_once_socket: open_socket_in: Address family not supported by protocol
[2016/10/14 21:06:28.015107, 0] printing/print_cups.c:487(cups_async_callback)
failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
我知道很多专业商业组织都在使用 Samba。他们到底是怎么让它工作的?这些错误完全是虚假的,超出了所有智能的范围!
答案1
Windows 10 客户端需要一些额外的调用才能由 SMB 服务器处理。我不知道 Samba 是否支持它们。其他一些 SMB 服务器确实支持 Windows 10 和 Windows 2016。