所以我遇到了一个不寻常的问题,我已经与之斗争了好几个星期了。
在进一步阐述之前,我先确认以下几点:
- Samba 服务器运行的是 Ubuntu Server 16.04
- 所有客户端计算机都是 Windows 7
- 所有 Windows 客户端都由单个用户连接(我知道这对于安全性来说很愚蠢,但是这超出了故障排除的范围)。
因此,我设置了一个 Samba 共享,以便所有客户端都可以查看/读取/执行/等等所述共享内的文件。(下一部分有点像古老的问题“先有鸡还是先有蛋?”)我在 Windows 7 中将共享映射为驱动器。我可以不是甚至无法查看映射驱动器,除非我直接连接到 Ubuntu 服务器本身。在这种情况下,我使用 Cygwin 从任何一台 Windows 7 客户端计算机建立到服务器的 SSH 连接。一旦我将 SSH 连接发送到服务器,Samba 共享即可访问,并且可以使用共享的所有内容,一切都很顺利。
如果我重新启动建立 SSH 连接的客户端,Samba 共享将不再可访问,直到我建立另一个 SSH 连接。
我在这里并不是专门质疑 SSH,这只是我用来编辑 /etc/samba/smb.conf 的东西。
- 我已在 iptables 中打开了 Samba 端口,并使规则持久化
- 我已将“server signature = auto”添加到 smb.conf 文件中,如上所述这里
- 我已在其中一台提到的本地 Windows 计算机上的 LPO 中设置了该参数这里改为“全部允许”
- 我已将“安全”参数设置为“ADS”和“域”
这些都毫无作用。目前,我很困惑这是否与 Samba 服务器有关,而只是与 Windows 客户端有关。
以下 smb.conf 参数已被缩短,以包含自从我第一次安装 Samba 以来我篡改过的所有部分。
[global]
## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
security = ADS
workgroup = [wkgp]
####### Authentication #######
server role = auto
[share]
path = /home/[user]/[share]
valid users = [user]
read only = no
browseable = yes
create mask = 0644
directory mask = 0755
server signing = auto
hostname lookups = yes
hosts allow = 192.168.X.
public = yes
force user = [user]
如果还需要其他信息以便更好地理解问题,请告诉我。请记住,我在 Windows 客户端和工作组上使用本地计算机登录。
此外,每当我运行“smbclient -L localhost -U [user]”时,我都会得到以下信息:
会话设置失败:NT_STATUS_NO_LOGON_SERVERS
答案1
security = ADS
从文件中删除,然后在[global]
文件部分/etc/samba/smb.conf
添加以下行:
[global]
usershare owner only = false
unix extensions = no
follow symlinks = yes
wide links = yes
ntlm auth = no
lanman auth = no
client ntlmv2 auth = yes
guest ok = yes
acl allow execute always = true
如果您允许网络上的所有计算机访问该共享,则可能需要按如下方式设置该共享:
[storage]
path = "/media/storage"
directory mask = 0777
writeable = yes
guest ok = yes
admin users = terrance
然后重启 samba 服务器
systemctl restart smbd.service
希望这可以帮助!