--- layout : post title : "Linux/Windows文件共享" subtitle : "Samba is a kind of dance" date : 2023-01-18 15:28:35 author : "Manford Fan" catalog : false header-img : "img/post-bg-universe.jpg" tags : - Samba - Server - Share --- 在TB买的带API接口的世纪互联版的Onedrive 5T盘前不久被封了,只用了三个月不到的时间,还是有点心疼。好在封禁之前发送了短信提醒,庆幸之余赶紧把重要的数据转移到本地,并由此对数据安全产生了丝丝焦虑。然后看到桌面上摆着的小黄——Western Digital My Passport 25E2 4T,再想起了CrossChain小主机,最后想到了之前部署过的Samba文件共享服务。好吧,焦虑确实减少了好多,开整! ## 一、格式化硬盘 西数硬盘原来是在Windows下使用的,自然磁盘文件系统是NTFS,这是一种微软开发维护的文件系统格式,在Mac和Linux下并没有原生支持,需要安装相应的工具才能识别,尤其是在Linux下,可以使用ntfg-3g这个小工具,之前是只支持读,不支持写,google了一下,目前已经支持读写NTFS文件系统了。鉴于NTFS是微软未公开源码的文件系统,ntfs-3g也是基于对该系统的研究而开发和维护的工具,并且项目开发者也承认在可靠性和实作性欠佳,最后综合考虑,还是将该硬盘格式化成ext4文件系统——Linux下原生的文件系统。 * a. 使用`parted`命令打标签,mbr或者gpt,一般是后者 * b. 使用`fdisk`命令创建分区,根据需求,确定分区数目 * c. 使用`mkfs`命令格式化分区,这里选择ext4 * d. 使用`mount`命令挂载分区,可读写模式 ## 二、安装Samba服务 Samba服务是一种比较简单的服务配置,可以通过`apt install samba`命令快速安装;通过`smbpasswd`命令新增用户和设定密码,用户必须是现已经存在的,建议是当前用户;配置文件是`/etc/samba/smb.conf`,备份后在文件最后加入如下部分,重新启动Samba服务即可。 ```conf [WD] comment = Western Digital browseable = yes path = /opt/webdav/wd read only = no writable = yes create mask = 0644 directory mask = 0755 valid users = root available = yes ``` mask 权限,指的是用户或群组能拥有的最大 ACL 权限,也就是说,给用户或群组设定的 ACL 权限不能超过 mask 规定的权限范围,超出部分做无效处理。 ## 三、配置Windows连接 服务端配置完毕之后,获取服务器局域网IP,以192.168.1.107为例,在Windows下,`Win+R`输入`\\192.168.1.107`回车,在windows主机上访问时,第一次,弹出输入用户名密码对话框,进入可以正常浏览到Samba服务器共享的文件夹,包括用户主目录。当修改过`/etc/samba/smb.conf`或者调整其他配置后,重新启动服务,再在Windows里面查看时,输入用户密码后会有弹出**拒绝访问**对话框,因为windows在用ip访问机器时,一般都是以一个默认的用户来连接访问的。所以,先要删除原来的连接信息,再重新连接。 ```powershell C:\Users\Administrator>net use 会记录新的网络连接。 状态 本地 远程 网络 ------------------------------------------------------------------------------- OK Y: \\192.168.1.107\wd Microsoft Windows Network OK \\192.168.1.107\wd Microsoft Windows Network 命令成功完成。 C:\Users\Administrator>net use \\192.168.1.107\wd /delete ... ``` 如果如上操作没有效果,可以尝试`Win+R`→`control keymgr.dll`并回车,找到Windows凭据,并删除Samba相关的内容,然后通过`计算机——管理——服务`对Workstation服务进行重新启动,这样再重新访问samba,会要求输入用户名和密码,里面的内容也是更新过了的,可以正常访。 ![samba](/img/posts/samba.png 'samba') ## 四、移动端连接 由于SMB服务有严重的安全漏洞,所以各大运营商,企事业单位以及私营公司网络都封禁了该服务的端口,当然也可通过端口转发的方式间接访问,但始终存在安全隐患。另一方面,有了[Alist](https://blog.rustle.cc/2022/12/20/alist/)可以方便的把本地存储通过webDAV协议映射到公网,所以更加没必要直接暴露出去SMB服务。但是在家里的时候还是非常有用的,毕竟内网访问的速度,可不是公网访问能比拟的,尤其是更换千兆路由之后,设备间的带宽至少可以达到**500M**,足够任何媒体的播放。配置也非常简单,以`Fileball`为例,只需要添加本地SMB协议的连接即可,输入正确的用户名,密码以及地址,比如`smb://192.168.31.201`。 ![samba_ipad](/img/posts/samba_ipad.png 'samba_ipad') ## 五、参考文档 - [Linux 与 Windows 共享文件的实现就这么简单!](https://www.51cto.com/article/701035.html) - [samba"拒绝访问"](https://www.cxyzjd.com/article/wjh168/7470012)