install samba on wsl


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服務的方案如下:

  1. 釋放Windows占用的139,445端口
  2. 安裝Samba服務,並且配置
  3. 更改防火牆配置
  4. 最后測試

 

實施步驟

釋放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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM