install samba on wsl

Posted lsgxeva

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:privatejamieli目录中,多了一个相同的目录:
    技术图片
  • 但是通过另外一台机器访问,发现访问失败,原因就是防火墙的设置问题,下一节我们讲下如何配置防火墙:
    技术图片

     

     技术图片

     

     

更改防火墙配置

  • 在“运行”界面输入: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

 

以上是关于install samba on wsl的主要内容,如果未能解决你的问题,请参考以下文章

Install samba on Linux 16.04 LTS

memcached server install(WSL)

(dev mode) install CONSUL on ubuntu

CentOS7设置Samba共享

WSL+samba+git:“错误:将对象添加到存储库数据库.git/objects的权限不足” / git-clone / git-add 权限错误

wsl官方文档和设置版本