我在设置 Samba 服务器时遇到问题,或者更确切地说,问题是我已经设置了服务器,但它有时会停止工作几个小时,然后再次启动。它始终可以通过 smbclient 从其他 Linux 计算机访问,只有在尝试从 Windows 7 计算机访问它时才会出现问题。我在公司设置了 2 台服务器,它们的配置完全相同,而且是同一种类型的服务器,其中一台始终正常工作,而另一台有时工作,有时不工作,似乎是随机的。
我尝试共享的文件夹位于 /opt/kie,由用户“wildfly”拥有。这是我的 smb.conf:
[global]
log level = 2
security = user
map to guest = bad password
#============================ Share Definitions ==============================
[kie]
path = /opt/kie
available = yes
valid users = wildfly
read only = no
browsable = yes
writable = yes
guest ok = yes
map to guest = Bad User
guest account = wildfly
force user = wildfly
我还创建了一个名为 wildfly 的 Samba 用户。这些命令通常可用于使 Samba 正常工作:
systemctl disable firewalld
service firewalld stop
chcon -t samba_share_t /opt/kie -R
chown wildfly:wildfly /opt/kie -R
service smb restart
service nmb restart
这些操作可禁用阻止 Windows 连接 Samba 的防火墙,设置正确的访问权限并重新启动两个 Samba 服务。但是在这种情况下,即使运行所有这些操作也无济于事。
在机器本身上(以及在公司另一台 Linux 机器上),我可以运行此命令:smbclient //netenab/kie --user=wildfly,并且连接可以顺利建立。
问题
有问题的服务器名为 netenab,正常工作的服务器名为 netenab-test。尽管两台服务器的配置完全相同,但 Windows 只能连接到 netenab-test,而不能连接到 netenab。两台机器都运行的是“Oracle Linux Server 7.1”。
在 Windows 控制台中尝试查看共享的结果如下:
C:\>net view \\netenab-test
Shared resources at \\netenab-test
Samba 4.2.3
Share name Type Used as Comment
-------------------------------------------------------------------------------
kie Disk (UNC)
The command completed successfully.
C:\>net view \\netenab
System error 5 has occurred.
Access is denied.
在第二种情况下,错误消息需要 20 秒才能出现,因此这似乎是某种超时。从 Windows 计算机 ping netenab 可以正常工作,我也可以 telnet 到该计算机上的端口 445。
如果我将日志级别增加到 3,此时就会出现以下消息:
[2016/04/15 07:37:51.289585, 3] ../source3/smbd/server_exit.c:249(exit_server_common)
Server exit (NT_STATUS_CONNECTION_RESET)
这些是完整的 3 级和 10 级日志: http://pastebin.com/WvCJYjH3 http://pastebin.com/vdbeeKa0
问题非常神秘,正是因为共享如何开始和停止工作。昨天下午,当我研究错误时,它随机开始工作了几个小时,但今天早上它又不工作了。当它工作时,它似乎在某些 Windows 计算机上工作,但在同一网络上的其他计算机上却不行。第二天,它在以前工作的计算机上停止工作,并在以前不工作的计算机上开始工作。
正如这里的答案所提到的:Samba:Windows 访问困难 我已验证我的 Samba 用户已正确设置并且我可以使用 smbclient 进行连接。
有人知道这里可能出现什么问题吗?
答案1
我自己已经解决了这个问题,最后这根本不是 Samba 的问题,而是 Windows 的问题。
解决方案是添加一个批处理文件,在 Windows 启动时设置 netenab 的凭据。该批处理文件包含:
net use \\netenab\kie /user:wildfly wildfly
我需要将其放入 C:\Users[USER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup