办公室文件传来传去太麻烦?在家多台设备同步数据总是出问题?不如自己建一个局域网共享服务器
每次看到同事在办公室里用U盘拷贝来拷贝去,或者在家里手机、平板、电脑之间用微信传文件,我就忍不住想:这都什么年代了,怎么还在用这么原始的方法?
今天分享一个我用了多年的解决方案——在Linux上配置Samba共享服务。配置完成后,所有设备都能像访问本地文件夹一样访问共享文件,手机、Windows电脑、Mac全都能连。
为什么选择Samba而不是其他方案?
市面上局域网共享方案不少,为什么我独爱Samba?主要因为它兼容性最好,没有之一。
Windows默认支持SMB协议(Samba实现的就是这个协议),macOS也原生支持。更重要的是,Android和iOS上都有大量支持SMB协议的App,这意味着你的手机平板能直接访问共享文件,不用开电脑。
我现在的家里,一台24小时运行的树莓派装上Samba,就成了全家人的文件中心。工作文档、家庭照片、电影资源全放在上面,谁需要谁访问,再也不用问“你把文件放哪了?”
环境准备与安装
开始之前,确保你的Linux系统已经联网。我用的是Ubuntu 22.04,其他发行版命令略有不同,但思路一样。
# 更新软件包列表sudo apt update# 安装Sambasudo apt install samba samba-common-bin -y
安装完成后,系统会创建一个/etc/samba/smb.conf配置文件,这是Samba的大脑,所有设置都在这里。
安装过程中你可能会注意到,系统还自动创建了一个叫sambashare的用户组。记下这个组名,后面配置权限时会用到。
创建共享用户和目录
接下来要做的两件事:为谁共享和共享什么。
创建专门用于共享的系统用户
虽然可以用现有用户,但我强烈建议创建一个专门用于共享的用户,这样权限更清晰,也更安全。
# 添加系统用户(不创建家目录,不分配登录shell)sudo useradd -M -s /sbin/nologin shareuser# 给这个用户设置密码(用于Samba登录)sudo passwd shareuser准备共享目录并设置权限我一般在根目录下创建一个专门的共享文件夹,方便管理。# 创建共享目录sudo mkdir /shared# 更改目录所有者sudo chown shareuser:shareuser /shared# 设置目录权限(755表示所有者可读写,其他人只读)sudo chmod 755 /shared如果想创建多个用户共享同一个目录,可以改为:# 先改属组为sambasharesudo chgrp sambashare /shared# 设置目录权限(允许同组成员写入)sudo chmod 775 /shared
配置Samba服务
编辑主配置文件
打开Samba的配置文件,找到最下面,准备添加我们的共享配置。
sudo nano /etc/samba/smb.conf
在文件末尾添加以下内容(我用的是nano编辑器,按Ctrl+O保存,Ctrl+X退出):
[shared_folder] comment = 我的共享文件夹 path = /shared browsable = yes writable = yes read only = no guest ok = no valid users = shareuser create mask = 0644 directory mask = 0755
这段配置的意思是:
[shared_folder]:共享名,别人会看到这个名称
path:实际共享的目录路径
browsable:是否在网络邻居中可见
writable/read only:读写权限
guest ok:是否允许匿名访问(建议设为no)
valid users:允许访问的用户
create mask:新创建文件的默认权限
directory mask:新创建目录的默认权限
添加Samba用户
系统用户和Samba用户是两回事,需要专门为Samba添加用户并设置密码:
# 添加Samba用户sudo smbpasswd -a shareuser
这里设置的密码可以和系统用户密码不同,我一般都设成不一样的,更安全。
启动与测试
启动服务并设置开机自启
# 重启Samba服务(不是start,是restart,确保配置生效)sudo systemctl restart smbd# 设置开机自启sudo systemctl enable smbd# 检查服务状态sudo systemctl status smbd看到绿色的“active (running)”就说明服务启动成功了。
本地防火墙设置
如果你的Linux开了防火墙,需要开放Samba端口:
# Ubuntu使用ufwsudo ufw allow samba# CentOS使用firewalldsudo firewall-cmd --permanent --add-service=sambasudo firewall-cmd --reload
客户端连接
Windows连接
打开“此电脑”
在地址栏输入:\\你的LinuxIP地址
按回车,会弹出登录框
输入用户名shareuser和你设置的Samba密码
如果Windows提示“找不到网络路径”,试试\\你的LinuxIP地址\shared_folder(shared_folder是配置里写的共享名)。
一个小技巧:在Windows上右键共享文件夹,选择“映射网络驱动器”,以后就可以在“此电脑”里直接访问了。
macOS连接
打开Finder
菜单栏选择“前往”->“连接服务器”
输入:smb://你的LinuxIP地址
连接身份选择“注册用户”,输入用户名密码
手机连接
在手机应用商店搜索“SMB客户端”,有很多选择。我个人常用的是“Solid Explorer”和“Documents by Readdle”,界面友好,功能齐全。
高级配置与安全建议
多用户配置
如果有多个人要使用,并且需要不同权限:
创建多个系统用户和Samba用户
修改配置文件中的valid users:
valid users = user1, user2, @groupname
@groupname表示允许某个用户组的所有成员访问。
匿名共享(不推荐但简单)
如果只是临时共享一些文件,不想设置密码:
[public]
path = /shared/public
browsable = yes
writable = yes
read only = no
guest ok = yes
create mask = 0666
directory mask = 0777
但要注意,这样配置任何人都能访问你的共享文件,仅限受信任的局域网环境使用。
常见问题排查
如果连接不上,按这个顺序检查:
Samba服务是否运行:sudo systemctl status smbd
防火墙是否开放:sudo ufw status(Ubuntu)
配置文件是否正确:sudo testparm(检查配置文件语法)
SELinux是否阻止(CentOS):sudo setsebool -P samba_enable_home_dirs on
我的实际使用场景
我在家里树莓派上配置Samba后,主要用在几个方面:
工作文件同步:在家办公时,所有工作文件都放在共享文件夹里。用电脑编辑,用平板查看,手机也能随时查阅,不需要来回同步。
家庭照片库:全家人的手机照片自动备份到共享文件夹,电视盒子也能直接播放,家人一起看照片视频方便多了。
影音中心:下载的电影、电视剧放在共享文件夹,电视、电脑、手机都能直接播放,不用来回拷贝。
最让我满意的是数据安全。重要文件都在我的服务器上有备份,手机丢了、电脑坏了,数据都在。比起各种网盘,速度更快,完全免费,隐私也有保障。
最后的小贴士
定期备份配置文件:配置满意后,记得备份/etc/samba/smb.conf,重装系统时能省很多事。
日志很重要:遇到问题查看/var/log/samba/下的日志文件,能找到很多线索。
性能调优:如果传输大文件速度慢,可以在配置里加socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536
考虑加密:如果共享敏感文件,考虑配置SSL/TLS加密传输。
配置Samba的过程可能会遇到一些小问题,但一旦配置成功,你会发现生活和工作效率都提升了一个档次。花一两个小时配置,换来的是今后几年的便利。
如果你在配置过程中遇到什么问题,或者有更好的使用技巧,欢迎在评论区分享讨论。技术就是用来服务生活的,让我们的生活更简单、更高效,这才是技术的意义所在。