我对 Ubuntu 还不太熟悉,在 Samba 共享方面遇到了问题。我在服务器上安装了 Ubuntu 20.04,在桌面上安装了 win10。我创建的共享文件夹(smb.conf 或 Nautilus)均未显示。奇怪的是,显示的某些文件夹可以从服务器和 win10(hassio 文件夹)访问。我假设 Samba 正在运行,只是我错过了一些配置或有什么东西在干扰。
jaco@jaco-server:~$ testparm -s
从 /etc/samba/smb.conf 加载 smb 配置文件已加载服务文件 OK。服务器角色:ROLE_STANDALONE
全局参数
[全球的]
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 = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
passwd program = /usr/bin/passwd %u
security = USER
server role = standalone server
server string = %h server (Samba, Ubuntu)
unix password sync = Yes
usershare allow guests = Yes
usershare owner only = No
idmap config * : backend = tdb
[打印机]
browseable = No
comment = All Printers
create mask = 0700
path = /var/spool/samba
printable = Yes
[民众]
force create mode = 0777
force directory mode = 0777
force user = nobody
guest ok = Yes
guest only = Yes
path = /dell
read only = No
jaco@jaco-server:~$ net usershare info --long
[测试] 路径=/测试注释= usershare_acl=Everyone:F,S-1-5-21-3504275779-4099143243-3885546580-1000:F, guest_ok=y
在服务器重启之间,它会交替显示公共和测试文件夹以及显示 ubuntu 上其他位置的其他 5 个 hassio 文件夹。在 win10 计算机上,始终显示 5 个 hassio 文件夹
这已经帮我解决了问题。要从您的计算机启用来宾帐户下的访问,您需要使用组策略编辑器 (gpedit.msc)。转到以下部分:计算机配置 -> 管理模板 -> 网络 -> Lanman 工作站。找到并启用策略启用不安全的来宾登录。这些策略设置确定 SMB 客户端是否允许不安全的来宾登录到 SMB 服务器。
答案1
如果按照 Microsoft 希望您默认配置的方式配置 Windows 10,则它永远无法“发现”您的 Ubuntu samba 共享。
这并不意味着您无法从 Win10 连接到它。您有 2 个选择:
[1] 直接在资源管理器中通过其 IP 地址连接- 例如:
\\192.168.1.100
[2] Win10可以使用mDNS连接服务器- 通过其主机名寻址,并在末尾附加 .local:
\\ubuntu-server-host-name.local
只需确保 avahi 已安装在 Ubuntu 上:
sudo apt install avahi-daemon
如果您确实希望 Win10 能够发现您的服务器,那么您实际上只有 2 个选择:
[A] Win10 使用一种称为 WS-Discovery (WSD) 的东西来发现主机。Samba 不执行 WSD,但通过一些工作你可以使其工作:
下载文件夹:
wget https://github.com/christgau/wsdd/archive/master.zip
解压缩:
unzip master.zip
重命名python脚本:
sudo mv wsdd-master/src/wsdd.py wsdd-master/src/wsdd
将其复制到 bin:
sudo cp wsdd-master/src/wsdd /usr/bin
将 systemd 服务文件复制到 /etc/systemd/system:
sudo cp wsdd-master/etc/systemd/wsdd.service /etc/systemd/system
重新加载服务:
sudo systemctl daemon-reload
启动服务:
sudo systemctl start wsdd
启用该服务,使其在启动时启动:
sudo systemctl enable wsdd
[B] 在 Win10 和 Ubuntu 上启用 NetBIOS- Win10 认为这是一个安全问题,因此试图避免这种情况:
在Win10中:控制面板 > 程序和功能 > 打开或关闭 Windows 功能 > SMB 1.0/CIFS 文件共享支持 > SMB 1.0/CIFS 客户端。
在 Ubuntu 中:编辑 /etc/samba/smb.conf 并在 workgroup = WORKGROUP 行下添加以下内容:
server min protocol = NT1
您可能认为简单地重启服务就足够了 - 并且就您而言可能确实如此:
sudo service smbd restart
但是 NetBIOS 是过去时代的遗物,您可能需要重新启动计算机。
NetBIOS 是一个很难处理的东西,所以您可能需要做一些其他的调整才能让它正常工作。
答案2
这对我有用,它类似于@Morbius1 给出的选项 A,但要容易得多:
$ sudo apt install wsdd
$ sudo systemctl enable wsdd