对于MacOSX开启稳定SMB分享的研究
0x00 缘起
MacOS以其相比Windows稳定而著称,使用MacOS开启SMB服务器作为家庭影音服务器的做法屡见不鲜。在使用MacOS开启SMB服务作为局域网网络存储器,并在Windows 11中映射为网络存储器进行Goland或者Pycharm开发时,出现了IDE中无法“稳定”加载在网络存储器的工程项目的现象,常常会出现项目突然“消失”的现象,多次进行“从磁盘中重新加载文件”的操作,也无法让项目“稳定”的存在。针对上述问题,经过有限的研究,可能是由于MacOS对SMB支持不完全所致,使用Docker搭建一个SMB服务器即可解决SMB链接不稳定。
0x01 方法
通过安装开源项目OrbStack为MacOS开启Docker服务,OrbStack是运行Docker容器和Linux的快速、轻便和简单的软件。相比Docker官方所提供Docker管理软件,OrbStack启动Docker容器速度更快,而且所占用内存资源更低。
SMB镜像使用评分较高的“dperson/samba”,使用Docker的Pull命令拉取镜像,注意配置代理以能够访问到Docker服务器(或者配置可访问到Docker源):
docker pull dperson/samba
关闭MacOS所启用的共享功能并确保MacOS所启用的SMB共享已经关闭,配置容器参数并启动容器:
docker run -it --name samba -p 139:139 -p 445:445 -v /Users/unicico/Documents/BaiduSync:/mount -d dperson/samba -u "username;password" -s "share;/mount/;yes;no;no;all;username;username"
上述命令除了配置端口映射以及容器名称等配置外,还了以下参数:
1. -v,/Users/unicico/Documents/BaiduSync:/mount :
将宿主机目录 /Users/unicico/Documents/BaiduSync 映射到容器内的 /mount 目录。这样容器内的 Samba 服务可以访问宿主机的该目录。
2. -d, 在后台运行容器。
3. dperson/samba: 使用 dperson/samba 镜像。
4. -u "username;password":
为 Samba 用户指定用户名和密码,这里用户名为 username,密码为 password。
5. -s "share;/mount/;yes;no;no;all;username;username":
share
: 共享的名字。/mount/
: 共享的目录路径(映射到容器内的/mount
)。yes
: 是否可写(yes 表示可写)。no
: 是否浏览(no 表示不可浏览)。no
: 共享时使用的 guest 访问权限(no 表示不使用)。all
: 访问控制列表配置(all 表示所有用户都可访问)。username
: 允许访问的用户。username
: 只读访问的用户。
在运行容器成功后,在Windows 11中即可映射为网络存储器,同时也进行上述使用IDE的开发操作,经过PyCharm以及Goland的运行实验,在36小时IDE运行过程中,没有出现上述项目文件加载不稳定的情况。
测试硬件环境:
1. MacBook:
- CPU: Apple M1;
- RAM: 16GB;
2. Windows:
- CPU: AMD Ryzen 9 6900HX with Radeon Graphics;
- RAM: 16GB;
测试软件环境:
1. MacOS:Sonoma 14.6.1 (23G93)
2. OrdStack:Version 1.7.5 (18165)
3. Windows:Windows 11 专业版 24H2
4. Goland(Windows):2024.2.3
5. PyCharm(Windows):2024.2.4 (Professional Edition)
0x02 结论
MacOS所提供的原生SMB服务在某些特定场景下不稳定,可通过Docker安装容器化的SMB服务器开启稳定SMB文件共享服务。上述方法通过了36小时使用PyCharm或者Goland进行网络存储器开发实验,证明该方法能够解决问题。
0x03 参照
1. docker搭建samba服务smb网络磁盘共享_docker samba挂多个盘-CSDN博客
2. Docker搭建smb共享服务器 - biiigwang - 博客园
3. Orbstack官网
0x04 格言
- 己欲立而立人,己欲达而达人。