Samba 文件共享:Linux 服务器与 Windows/Mac 共享文件夹
NFS 是 Linux 之间共享文件的方案,但 Windows 不支持 NFS(需要额外安装组件)。Samba 实现了 SMB/CIFS 协议,让 Linux 服务器上的目录在 Windows 文件资源管理器里显示为网络驱动器,Mac 的 Finder 也原生支持。家庭 NAS、办公文件服务器、开发环境文件同步,Samba 是最通用的跨平台文件共享方案。
Samba 适用场景
- 家庭 NAS:服务器上的影视、照片目录挂载到 Windows/Mac 直接访问
- 办公文件服务器:团队共享文档,Windows 客户端映射网络驱动器
- 开发环境:Windows 开发机访问 Linux 服务器上的代码目录
- Time Machine 备份:Mac 通过 Samba 备份到 Linux 服务器
服务器配置
最低 1 核 1GB,Samba 很轻量,主要是磁盘 I/O 要够。
雨云服务器 rainyun+com 有大容量数据盘机型,非常适合搭文件服务器。注册填优惠码 2026off 领 5 折优惠券。
安装 Samba
bash
sudo apt update
sudo apt install -y samba samba-common-bin
# 验证安装
smbd --version
配置共享目录
场景一:匿名只读共享(媒体文件)
bash
# 创建共享目录
sudo mkdir -p /srv/share/media
sudo chmod 755 /srv/share/media
# 放一些测试文件
sudo cp /etc/issue /srv/share/media/test.txt
编辑 Samba 配置:
bash
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo nano /etc/samba/smb.conf
在文件末尾添加:
ini
[global]
workgroup = WORKGROUP
server string = My File Server
# 服务器 NetBIOS 名称(Windows 网络邻居显示的名称)
netbios name = MYSERVER
security = user
# 日志
log file = /var/log/samba/log.%m
max log size = 1000
# 匿名只读共享(不需要密码)
[media]
comment = Media Files
path = /srv/share/media
public = yes
writable = no
guest ok = yes
read only = yes
场景二:需要密码的读写共享
bash
# 创建共享目录
sudo mkdir -p /srv/share/documents
sudo chown -R nobody:nogroup /srv/share/documents
sudo chmod -R 775 /srv/share/documents
# 创建 Samba 用户(必须是系统用户)
sudo useradd -M -s /usr/sbin/nologin sambauser
sudo smbpasswd -a sambauser
# 输入密码两次
在 smb.conf 里添加:
ini
[documents]
comment = Shared Documents
path = /srv/share/documents
valid users = sambauser
writable = yes
browseable = yes
create mask = 0660
directory mask = 0771
场景三:多用户共享(团队协作)
bash
# 创建组和用户
sudo groupadd staff
sudo useradd -M -s /usr/sbin/nologin alice
sudo useradd -M -s /usr/sbin/nologin bob
sudo usermod -aG staff alice
sudo usermod -aG staff bob
sudo smbpasswd -a alice
sudo smbpasswd -a bob
# 创建组共享目录
sudo mkdir -p /srv/share/team
sudo chown root:staff /srv/share/team
sudo chmod 2775 /srv/share/team # SGID,新文件自动属于 staff 组
ini
[team]
comment = Team Files
path = /srv/share/team
valid users = @staff
writable = yes
browseable = yes
create mask = 0660
directory mask = 2770
force group = staff
重启并测试
bash
# 检查配置语法
testparm
# 重启 Samba
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd
# 查看共享列表
smbclient -L localhost -N
防火墙配置
bash
# Samba 使用的端口
sudo ufw allow Samba
# 等同于:
# sudo ufw allow 445/tcp
# sudo ufw allow 139/tcp
# sudo ufw allow 137/udp
# sudo ufw allow 138/udp
安全建议:只允许内网 IP 访问,不要把 Samba 暴露到公网:
bash
sudo ufw allow from 192.168.1.0/24 to any app Samba
sudo ufw deny Samba
在 Windows 上挂载
方式一:文件资源管理器
- 打开文件资源管理器
- 地址栏输入
\\服务器IP\共享名(如\\192.168.1.100\documents) - 输入 Samba 用户名和密码
方式二:映射网络驱动器(永久)
powershell
# PowerShell 命令
net use Z: \\服务器IP\documents /user:sambauser 密码 /persistent:yes
在 macOS 上挂载
- Finder → 前往 → 连接服务器(⌘K)
- 输入
smb://服务器IP/共享名 - 输入用户名密码
自动挂载(每次开机):
bash
# 在 /etc/fstab 里添加(macOS)
//sambauser@服务器IP/documents /Volumes/documents smbfs credentials=/etc/samba-creds 0 0
Mac Time Machine 备份配置
让 Mac 通过 Samba 做 Time Machine 备份:
bash
# 创建备份目录
sudo mkdir -p /srv/share/timemachine
sudo chown sambauser:sambauser /srv/share/timemachine
# 在 smb.conf 里添加特殊配置
[timemachine]
comment = Time Machine
path = /srv/share/timemachine
valid users = sambauser
writable = yes
vfs objects = catia fruit streams_xattr
fruit:time machine = yes
fruit:time machine max size = 500G
bash
sudo systemctl restart smbd
然后在 Mac 的「系统偏好设置」→「Time Machine」→「选择磁盘」里,找到并选择这个 Samba 共享。
查看连接状态
bash
# 查看当前连接的用户
smbstatus
# 查看 Samba 日志
sudo tail -f /var/log/samba/log.smbd
Samba 是最通用的跨平台文件共享方案,Windows、macOS、Linux 三端都能无缝访问。在雨云rainyun上搭建文件服务器,可以配合大容量数据盘存储媒体和文档,大容量机型价格实惠,搭一台私有 NAS 替代群晖。