我正在嘗試在我的 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上有一個實現WSD的項目,用Python編寫。可以在以下位置找到: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 電腦可見。