我正在尝试在我的 ubuntu 18.04 服务器上通过 samba 启用文件夹共享;
我已经做了什么:
- 编辑 /etc/samba/smb.conf 如下
[global] workgroup = WORKGROUP interfaces = lo eth0 server role = standalone server server string = Samba Server %v security = user map to guest = bad user name resolve order = bcast host dns proxy = no bind interfaces only = yes log file = /var/log/samba/smb.log max log size = 10000 [Public] path = /samba/share writable = yes guest ok = yes guest only = yes read only = no create mode = 0777 directory mode = 0777 force user = nobody
- 使用此结果运行 testparm
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[Public]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] bind interfaces only = Yes dns proxy = No interfaces = lo eth0 log file = /var/log/samba/smb.log map to guest = Bad User max log size = 10000 name resolve order = bcast host security = USER server role = standalone server server string = Samba Server %v idmap config * : backend = tdb [Public] create mask = 0777 directory mask = 0777 force user = nobody guest ok = Yes guest only = Yes path = /samba/share read only = No
- 重新启动 smbd.service
- 尝试通过 Windows 登录;Windows 无法访问 \SERVERNAME\...
- 查看错误日志
[2019/06/23 21:05:54.565424, 0] ../lib/util/become_daemon.c:124(daemon_ready) STATUS=daemon 'smbd' finished starting up and ready to serve connections [2019/06/23 21:06:34.482176, 0] ../source3/smbd/ipc.c:843(reply_trans) reply_trans: invalid trans parameters
我已经使用这个大约 5 天了,有人知道发生了什么吗?如何解决这个问题?我只需要一个公共共享和另一个用于限制访问的共享。
答案1
仅绑定接口 = 是
接口 = lo eth0
您告诉 samba 仅使用某些接口,但您指定的接口 ( eth0 ) 在 Ubuntu 18.04 中不存在。这是另一种形式。
除非您有理由指定任何内容,而宁愿让 samba 自行解决这个问题,否则我会从 smb.conf 中删除这两行并重新启动 smbd:
sudo service smbd restart
如果您确实想指定某个接口,请使用此命令来查找其真实名称:
nmcli device show | grep DEVICE
答案2
Windows 现在使用 WSD(Web 服务发现?),它不包含在 Ubuntu 19.04 以来可用的各种 Samba 中。
github 上有一个用 Python 编写的实现 WSD 的项目。可以在以下网址找到:https://github.com/christgau/wsdd或直接下载https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py
使用此功能的一个技巧是您需要通过防火墙启用几个端口:
需要打开端口 5357/tcp 和 3702/udp 才能运行 wsdd。
wsdd 可以从命令行运行,或者您可以创建一个 systemd 服务来运行它。
这是 Samba 开发的一个活跃领域(可能),有关它的一些信息可以在以下位置找到:https://www.ixsystems.com/community/resources/how-to-kill-off-smb1-netbios-wins-and-still-have-windows-network-neighbourhood-better-than-ever.106/目前已在 Arch 用户存储库中提供,显然其他一些发行版也提供。它也在 AskUbuntu 中被提及使 Samba 共享在 Windows“网络”中可见
作为服务启动
我为 wsdd 创建了一个 systemd 服务单元文件,/lib/systemd/system/wsdd.service
内容如下
[Unit]
Description=WSDD Network Service
BindsTo=smbd.service
After=smbd.service
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/bin/wsdd
#ExecReload=/user/bin/wsdd
[Install]
WantedBy=multi-user.target
然后我转到wsdd.py
,/usr/bin/wsdd
并将其权限修改为555(读取和执行)。
最后,sudo systemctl enable wsdd.service
重新启动 - 我的 Ubuntu 系统现在在我的 Win10 电脑上可见。