Samba 局域网文件共享实战:让全端像访问本地盘一样读写


当你家里或办公室里有多台电脑、一个 NAS、几部手机时,"文件怎么在机器之间互相访问"是个绕不开的问题。用 U 盘拷来拷去显然笨;用云盘又有隐私和依赖第三方的顾虑。最直接的解法是在一台常开机的机器上做一个"网络共享目录",让其他设备像访问本地文件夹一样读写它。Samba 就是这样一套成熟的方案——它在 Linux 上实现了 Windows 的 SMB/CIFS 文件共享协议,让 Windows、macOS、Linux、Android 都能访问你这台服务器上的共享目录。这篇讲清 Samba/NFS 的分工、怎么起一个共享、权限与认证的坑,以及它作为"局域网数据枢纽"的安全边界。

一、网络文件共享先想清楚:SMB 与 NFS,还有"谁是主角"

先分清两种最常见的网络文件共享协议。SMB/CIFS:由 Samba 实现,兼容性极广(Windows 原生支持、macOS/Linux/移动端大多也支持),最适合"想让多种操作系统都访问"。NFS:Linux 生态更常见、性能好的协议,主要用于 Linux 服务器之间或专门的存储型应用,跨到 Windows 反而麻烦。自托管家用/团队常用 Linux 做共享给全端,Samba 通常是最省心的选择。

另一个要厘清的"工程 vs 平台"问题也和前面几次一致:Samba 做的是"把一台机器的目录通过网络共享出去",它面向的是"人/普通文件访问";如果你要的是"给应用用的、统一的对象存储接口",那还是 MinIO 为主。别把小团队"要一块网盘给全端共享"误拆成"要搭一套对象存储"——两者解决的是不同问题。

二、最小上手:把一个目录共享出去

Linux 装好 Samba 后,核心就是改 `/etc/samba/smb.conf` 定义"共享(share)",再重启服务。一个只对局域网开放、允许你账号读写的共享示例:

# 安装并创建共享目录
sudo apt install samba
sudo mkdir -p /srv/share/media
sudo chmod 2775 /srv/share/media

# 在 smb.conf 末尾加一个共享定义
[media]
   path = /srv/share/media
   browseable = yes
   read only = no
   valid users = 你的账号          # 只允许指定用户访问
   create mask = 0664
   directory mask = 0775

# 给用户设置 Samba 密码(注意:这是 Samba 的访问口令,独立于系统登录密码)
sudo smbpasswd -a 你的账号
sudo systemctl restart smbd

关键的坑也正好在权限:Samba 的访问认证(smbpasswd)和你系统的本地登录口令是两套;而"能访问共享"还取决于"文件在系统层面的用户/组权限"是否允许。因此一遇到"能连上却打不开/写不进/读写乱",先查两处:一是 Samba 认证用户是否被 `valid users` 允许,二是系统层面这个用户对该目录有没读写权。把它们分清,九成的 Samba 权限问题都能解决。

三、映射与挂载:让其他端像本地盘一样访问

共享配好后,各端怎么用:Windows「映射网络驱动器」填 `\\服务器IP\media`;macOS「前往 → 连接服务器」填 `smb://服务器IP/media`;Linux 客户端用 `mount -t cifs` 挂载(需要 cifs-utils);手机用支持 SMB 的文件/播放器 App 也能连。这里尤其要说 Linux/mac 走 Samba 的一个高频便利:它能像"本地文件夹"一样供多端读写同一目录,适合"全家共享的媒体、文档库"。

# Linux 客户端挂载 Samba 共享到本地目录
sudo apt install cifs-utils
sudo mount -t cifs //服务器IP/media /mnt/media \
  -o username=你的账号,password=口令,uid=1000,gid=1000

值得留意的是访问体验受网络影响:Samba 走局域网通常很快,但要跨公网/VPN 访问会受带宽影响;它也默认不做文件级加密(更准确的说是可选/受限),所以"跨公网跑 Samba"并不理想——跨公网传输更应该交给前面聊过的 VPN/隧道,而不是把 Samba 裸开出去。Samba 天然的最佳主场是"可信局域网"。

四、安全边界:别把裸开放,权限收拢,结合做快照

Samba 一旦裸暴露到公网,风险明显:它给的是真实的文件读写,口令爆破/漏洞利用可能会直接把数据拱手让人。所以几条铁律:只绑定内网接口监听(`interfaces`/`bind interfaces only`)别暴露到公网;`valid users` 精确到用户,不要用"人人可访问"的宽松共享;开启 SMB 完整性/签名、及时升级 Samba 本身。公网访问永远是优先走内网/VPN,而不是裸开。

# 只在可信网卡上监听,别把 445 暴露到公网
[global]
   interfaces = 127.0.0.1/8 192.168.1.0/24
   bind interfaces only = yes
   server min protocol = SMB2        # 禁掉过旧有风险的 SMB1

同时要面对一个现实:既然 Samba 是一处"高价值、可被读写、容易出权限和误删问题"的数据集中点,它恰恰是最该被纳入"快照 + 异地备份"的地方——把共享目录所在存储(如果是 ZFS 存储就更顺其自然)配上快照和异地副本,发生误删/勒索/坏盘时能找回。别因为"它只是个文件夹分享"就小看它承载的数据价值。

五、什么时候更该用"现代"替代:从 Samba 到 WebDAV/云同步的分界

Samba 很好,但也有场景不必选它。如果你同时要让"多端都能自动同步、历史版本、在外网也能安全访问",那 Samba 就不如一台面向"同步 + 协作"的私有云(比如 Nextcloud)来得顺手——Nextcloud 客户端本身就是为跨端同步与文件恢复设计的,且天然支持 HTTPS/公网。反过来说,如果你只是要"局域网里,一台文件服务器,各端像访问本地盘一样读写",Samba 这类直接协议比云盘更轻、更贴合。

判断的一句话:同一局域网、想让各端当本地盘用、并发小,选 Samba;要跨端自动同步 + 历史版本 + 公网安全访问,选 Nextcloud/云同步。别把"建个 Samba 共享"误当成"解决了所有文件访问场景",也别为"一个局域网共享"去上重型的云盘全家桶。

结语

Samba 的价值,是用最直接的方式解决"局域网内多端像访问本地文件夹一样访问同一批文件"。落地抓手:用 smb.conf 定义共享并精确到用户,分清 "Samba 认证口令"与"系统文件权限"两套才能解开九成权限问题;用各端映射/挂载把它当作本地盘用;只绑内网、开 SMB2、及时升级,别裸开公网;并把它承载的数据纳入快照 + 异地备份。边界同样清楚——它更适合"可信局域网当本地盘用",跨公网或要自动同步/历史版本,则交给 VPN 或 Nextcloud 这一类现代读写与同步方案。想清楚"我就想把局域网文件放进一个共享,各端顺畅读写"这一点,Samba 就是那套简单、成熟、随处可见的组合拳。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

KVM/QEMU 虚拟化实战:在宿主机上跑出完整独立系统

Nextcloud 私有云盘实战:把多端数据同步收拢回自己手里

评 论
更换验证码