install samba on wsl
參考 https://blog.csdn.net/fcymk2/article/details/86572249
參考 https://segmentfault.com/a/1190000015892542
參考 https://dog.xmu.edu.cn/2017/05/19/windows-network-neighborhood.html
根據以上背景知識,在Windows10上通過WSL搭建Samba服務的方案如下:
- 釋放Windows占用的139,445端口
- 安裝Samba服務,並且配置
- 更改防火牆配置
- 最后測試
實施步驟
釋放Windows占用的139,445端口
釋放139端口
- 安裝完畢的Windows10系統,默認情況下會監聽139與445端口,通過netstat -an | findstr /r "139 445"可以查看:
- 禁用NetBIOS over TCP/IP,通過如下操作禁用,在“更改適配器設置”界面,雙擊對應網卡,打開“以太網狀態”界面:
- 點擊“屬性”打開“以太網屬性”界面:
- 選中“TCP/IPv4”項目,點擊“屬性”,打開“TCP/IPv4屬性”界面:
- 點擊“高級”並選中“WINS”頁簽,勾選“禁用TCP/IP上的NetBIOS”:
- 點擊“確定”以后生效,如果有多塊網卡,每塊網卡都要按照如上步驟操作,操作完畢以后,還是通過netstat命令進行查看,發現139端口已經不再監聽。
釋放445端口
- 通過“WIN+R”打開運行窗口,輸入:
services.msc
,打開服務管理界面: - 找到Computer Browser服務,雙擊該服務打開屬性界面,將“啟動類型”修改為禁用,並且直接點擊“停止”:
- 找到Server服務:
- 雙擊Server服務,打開屬性界面,將“啟動類型”修改為禁用,並且直接點擊“停止”:
- 設置完畢以后重啟系統。
- 重啟完畢以后,再通過netstat -an | findstr /r "139 445"命令檢查端口使用情況,發現445端口已經釋放成功。
安裝Samba服務,並且配置
安裝Samba服務:
- 先升級apt-get工具,命令:
sudo apt-get update
: - 安裝samba軟件包,命令:
sudo apt install samba
:
配置samba服務:
這里只是一個配置示例,用最簡單的配置讓服務跑起來,如果需要深入了解samba服務的配置,建議去網上找更多的攻略。
- 打開配置文件,並進行編輯:
sudo vi /etc/samba/smb.conf
,這里配置了一個用戶私有目錄homes
,以及一個所有人可讀寫的共享目錄share
,對應windows上的目錄分別是c:\private\<用戶名>
,以及c:\share
:
具體配置文件內容如下:
[global]
workgroup = WORKGROUP server string = jamieli-vm log file = /var/log/samba/log.%m log level = 0 max log size = 1000 security = user map to guest = Bad User passdb backend = smbpasswd smb passwd file = /etc/samba/smbpasswd username map = /etc/samba/smbusers guest account = nobody os level = 64 [homes] comment = user private path = /mnt/c/private/%u read only = No [share] comment = home share guest ok = Yes path = /mnt/c/share read only = No public = Yes
- 寫好配置文件,因為是user安全模式,所以需要添加一個smb用戶,命令:
sudo smbpasswd -a jamieli
,並輸入密碼: - 啟動smbd服務,
sudo service smbd start
: - 在Windows的CMD窗口查看端口暫用情況,發現139與445被smbd服務占用了:
- 通過Windows本地的資源管理器,輸入本機IP地址,可以訪問到共享目錄:
- 在
homes
目錄中,創建一個test
目錄,可以看到對應c:\private\jamieli
目錄中,多了一個相同的目錄: - 但是通過另外一台機器訪問,發現訪問失敗,原因就是防火牆的設置問題,下一節我們講下如何配置防火牆:
更改防火牆配置
- 在“運行”界面輸入:
wf.msc
,啟動防火牆配置界面,選中“入站規則”菜單,右側點擊“新建規則”: - 在“新建入站規則向導”界面中,選中“端口”:
- 選擇“TCP”,並且輸入端口“139,445”:
- 選擇“允許連接”:
- 起名為“samba服務”,點擊“完成”:
最后測試:
- 在Mac下面進行訪問測試,在Finder界面下使用“CMD+K”,打開“連接服務器”界面,輸入之前配置的服務器地址:
- 輸入通過smbpasswd命令添加的SMB賬戶與密碼:
- 成功訪問通過WSL搭建的Samba服務,此時關閉Ubuntu窗口沒有任何影響,服務在后台會繼續運行:
總結
通過該服務配置的過程,大體了解了WSL的使用,通過該方式也可以在Windows上部署SSH等服務,對於熟悉Linux系統的人員來說是一大福音。
同時通過一些工具,也可以將這些服務包裝成Windows的Service,Windows啟動的時候自動加載這些服務。
歡迎各位看官互相交流,Email:jamieli@vip.qq.com,WeChat:jamieli
參考
NetBIOS over TCP/IP
Windows Subsystem for Linux Documentation
-------------------------------
禁用 Browser 和 LanmanServer 服務:
sc config LanmanServer start=disabled sc config Browser start=disabled
查看網絡接口代理配置
netsh interface portproxy show all
查看網絡監聽端口
netstat -an | findstr /r "139 445"
編輯配置文件 /etc/samba/smb.conf 增加以下內容:
[Share-root] comment = Share-root browseable = yes path = /root valid users = @root, root public = yes available = yes guest ok = no writable = yes read only = no directory mask = 0775 create mask = 0664 [Share-lsgx] comment = Share-lsgx browseable = yes path = /home/lsgx valid users = @root, lsgx public = yes available = yes guest ok = no writable = yes read only = no directory mask = 0775 create mask = 0664
編輯配置文件 /etc/init.wsl 添加 /etc/init.d/smbd $1 內容
#! /bin/sh
#Filename: /etc/init.wsl
#Usage: sudo /etc/init.wsl [start|stop|restart]
/etc/init.d/cron $1
/etc/init.d/ssh $1
/etc/init.d/smbd $1
/etc/init.d/supervisor $1
瀏覽 \\127.0.0.1 共享內容
================ End