我的目标:我的windows 10客户端可以使用来宾帐户(无需密码(访问、查看和执行Ubuntu服务器共享的.exe文件。
预期结果:当我在文件资源管理器中键入\ubuntu server hostname\bakro时,我可以看到并执行.exe文件
实际结果:Windows无法访问\ubuntu服务器主机名\bakro,错误代码:0x80004005未指定错误
其他观察:
- 当我在Windows 10客户端上运行
net use \ubuntu-server-hostnamebakro
时,它会产生System error 53 has occurred. The network path was not found.
- 我可以使用smbclient从ubuntu服务器访问共享文件
当我运行smbclient -L \\ubuntu-server-hostname
时,我可以看到bakro在那里列出
当我运行smbclient \\ubuntu-server-hostname\bakro
进入smb命令行,并键入ls
列出共享中的文件时,我可以看到.exe文件
在这两种情况下,都要求我提供当前用户帐户密码。我按回车键(空白密码(作为回应
我使用systemctl status smbd
检查了日志,得到了多行session closed for user samba-guest
。时间似乎与我通过smbclient
获得份额一致 - ubuntu服务器也在运行OpenVPN服务器。OpenVPN服务器使用10.8.0.0/24子网,并分配10.8.0.1 ip地址。如果我使用同一台Windows 10计算机连接到OpenVPN服务器,然后通过在文件资源管理器中键入
\10.8.0.1
访问samba共享,我可以看到列出的文件夹bakro。我可以浏览文件夹并执行.exe文件(这是我想要和期望的结果(。此访问尝试使用systemctl status smbd
记录在samba日志中
我所做的:
- 基于观察#1,我将主机名替换为服务器公共ip地址。对于通过
net use
和文件资源管理器进行访问,它会产生相同的结果。两次尝试都没有记录在通过systemctl status smbd
获得的samba日志中 - 基于观察#1和#2,我使用
ufw status
检查了Ubuntu服务器防火墙。Samba被列为允许通过ipv4和ipv6。我还检查了服务器的安全组。端口445 TCP被列为允许
我已尝试禁用ufw并将安全组设置为允许从任何位置连接到所有端口,但我仍然无法访问共享 - 基于观察#3,我获得了使用
ip link show
的网络接口列表。获得了3个接口:lo(环回(、eth0(互联网(、tun0(OpenVPN(。我在smb.conf中添加了interfaces = lo eth0
。结果:我无法从\ubuntu-server-hostnamebakro
和\10.8.0.1bakro
访问共享 - 我尝试将来宾帐户从samba来宾更改为nobody。除了日志现在显示
session closed for user nobody
之外,没有任何更改 - 我尝试将
client min protocol = SMB2
和client max protocol = SMB3
添加到smb.conf源中 - 已更改文件共享连接,以便在Windows 10客户端的高级共享设置中启用40位和56位加密
次要观察:
- 我发誓,当我第一次设置samba服务时,我使用同一台Windows 10计算机测试了文件共享功能(但我的内存充其量是不可靠的(
- 我还试图通过另外两台Windows7计算机上的文件资源管理器访问\ubuntu服务器主机名\bakro,结果相同
以下是我的smb.conf:的内容
# Global parameters
[global]
disable netbios = Yes
guest account = samba-guest
interfaces = 0.0.0.0/0
log file = /var/log/samba/log.%m
logging = file
map to guest = Bad User
max log size = 1000
obey pam restrictions = Yes
pam password change = Yes
panic action = /usr/share/samba/panic-action %d
passwd chat = *Entersnews*spassword:* %nn *Retypesnews*spassword:* %nn *passwordsupdatedssuccessfully* .
passwd program = /usr/bin/passwd %u
security = USER
server role = standalone server
server string = ubuntu-samba-server
unix password sync = Yes
usershare allow guests = Yes
idmap config * : backend = tdb
[printers]
browseable = No
comment = All Printers
create mask = 0700
path = /var/spool/samba
printable = Yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
[bakro]
guest ok = Yes
path = /srv/files/bakro
一切都在缓慢变化。我已经使用silmple smb.conf超过15年了,但突然之间无法以来宾身份连接到共享。如果我配置了home-dir共享,这是可以的,但guest的免费共享被拒绝了。我花了一些时间才发现,在共享定义中,有必要指定:valid users = nobody
,如您在示例中看到的:
[data]
path = /srv/data
valid users = nobody
force user = nobody
read list = nobody
write list = nobody
guest account = nobody
guest only = yes
guest ok = yes
我无法解释它为什么以及如何发挥作用。只需知道,它依赖于samba版本(现在:4.11.5-Debian(。linux端的dir/srv/data应该有nobody:nogroup,文件至少有666,目录至少有777。因此CCD_ 22和CCD_。通过这种方式,您应该更正全局设置。