Ubuntu下通过samba与Windows共享目录踩坑记

前言

搞了个Ubuntu虚拟机来当开发环境,期望是能够Windows下撸码、Ubuntu下运行
起初用的是vmware自带的共享文件夹功能,但是由于一些奇奇怪怪的权限问题(比如执行 yarn 时报错)踩坑无数,最终放弃了这一方案
改为文件夹原生就在Ubuntu里,通过samba共享给宿主机Windows读写,以此解决权限问题
我的Linux水平确实非常菜,还望各位不吝赐教

安装samba

sudo apt-get install samba samba-common
# 创建一个目录用于共享,例如
sudo mkdir /www/wwwroot
# 无脑给权限
sudo chmod 777 /www/wwwroot

这里就踩到了第一个坑,光给共享目录(/www/wwwroot)权限还不够,上级目录(/www)也要给对应权限才行

# 为samba添加用户。回车后还需要输入密码
sudo smbpasswd -a mokeubuntu
# 编辑samba配置文件
sudo vim /etc/samba/smb.conf

将以下内容填写到配置文件最尾部

[wwwroot]
path = /www/wwwroot
browseable = yes
available = yes
writable = yes
create mask = 0700
directory mask = 0700

# 然后重启samba服务
sudo service smbd restart

然后,在宿主Windows的资源管理器地址栏或“运行”中输入 \ + 虚拟机IP(例如 \\192.168.132.130),输入你上面添加的用户名和密码即可看到这个 wwwroot 文件夹了
什么?你看不到?那就对了,我也一样

启用Windows SMB功能

Win10自带的 CIFS 文件共享支持 默认没有启用,因此无法访问samba共享出来的文件夹
进入宿主Windows设置,搜索 Windows 功能,选择 启用或关闭Windows功能,在弹窗中下拉找到 SMB 1.0/CIFS File Sharing Support(或CIFS 文件共享支持),勾选确认重启即可、

怎么样,能访问了吗?
还不行?

配置Ubuntu的防火墙

折腾了半天,才想起来自己启用过防火墙,难怪死活无法访问

# 看看是不是启用了防火墙
sudo ufw status
# 要么直接禁掉它
sudo ufw disable
# 要么放行CIFS所用的端口
sudo ufw allow 445

sudo ufw reload

最后,终于可以在Windows下读写这个wwwroot目录了,可喜可贺、可喜可贺

5 条评论

昵称
  1. trafficmgr

    VS Code Insiders 的 Remote Development插件支持WSL、各种远程撸码了(逃

    1. mokeyjay

      在写PHP这件事上,VSC就是屑(暴言

      1. trafficmgr

        这个我不知道哎,平时重度用VSCode,不知道PHP主要用什么IDE

  2. 某亚瑟

    真心推荐OMV,OpenMediaVault,基于Debian,NAS的功能非常好用稳定。你可以在Debian的基础上直接安装OMV程序,虽然不知道Ubuntu支持不支持……

    1. mokeyjay

      nas系统吗……好像又没必要到这个地步