This repository has been archived on 2023-11-13. You can view files and clone it, but cannot push or open issues or pull requests.
blog/_posts/2023-01-18-samba.md
2023-06-03 15:58:09 +08:00

81 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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)