内网服务器文件共享,Samba搭建文件服务器
内网文件共享最常用的方案是 Samba,它能让 Linux 服务器以 SMB 协议向 Windows、macOS 和手机客户端提供共享目录。
本文从零开始,在 Linux 上用 Samba 搭建文件服务器,最终实现 Windows 电脑通过 \\服务器IP\共享名 直接读写文件。
先确认环境:一台 Linux 服务器(Ubuntu、Debian、CentOS 均可),一个固定内网 IP,以及需要共享的目录路径。
以下操作需要 root 权限或 sudo 权限,建议在内网环境测试后再正式使用。
安装 Samba 并确认服务状态
不同发行版包管理器不同,按实际情况选择一条命令执行。
Ubuntu / Debian:
sudo apt update
sudo apt install samba -y
CentOS / Rocky Linux:
sudo yum install samba samba-client -y
安装完成后确认版本和服务状态:
smbd --version
systemctl status smbd
如果服务未启动,先执行 sudo systemctl start smbd,并设置开机自启 sudo systemctl enable smbd。
注意 CentOS 上服务名可能是 smb 而不是 smbd,用 systemctl list-units | grep smb 确认。
创建共享目录并设置系统权限
假设共享目录为 /srv/share,先创建目录并设置一个专用用户。
sudo mkdir -p /srv/share
sudo useradd -M -s /sbin/nologin smbuser
sudo chown -R smbuser:smbuser /srv/share
sudo chmod -R 2770 /srv/share
这里用 -M 表示不创建家目录,-s /sbin/nologin 禁止该用户登录系统,
只用于 Samba 认证。2770 中的 2 是设置组继承位,
新建文件会自动继承目录所属组,
方便多人协作。
接着给 Samba 用户设置密码,这个密码和系统密码是分开的:
sudo smbpasswd -a smbuser
按提示输入两次密码即可。
如果提示用户不存在,先确认系统用户是否创建成功。
编辑 smb.conf 配置共享
Samba 主配置文件通常位于 /etc/samba/smb.conf。
修改前先备份:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
在文件末尾追加共享配置:
[share]
comment = Internal File Share
path = /srv/share
browseable = yes
writable = yes
valid users = smbuser
create mask = 0660
directory mask = 2770
关键项说明:path 是共享目录路径;valid users 限制只有 smbuser 能访问;writable = yes 允许写入;create mask 和 directory mask 控制新建文件和目录的权限。
保存后检查配置语法:
testparm
如果输出中没有报错,重启服务:
sudo systemctl restart smbd
放行防火墙端口
Samba 依赖 139 和 445 端口。
如果系统开了防火墙,需要放行。
firewalld(CentOS 系):
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload
ufw(Ubuntu 系):
sudo ufw allow samba
sudo ufw reload
如果是云服务器,还要在控制台安全组中放行 445 端口,仅限内网 IP 段访问更安全。
从 Windows 客户端验证访问
在 Windows 文件资源管理器地址栏输入:
\\服务器内网IP\share
回车后会弹出登录框,输入用户名 smbuser 和刚才设置的 Samba 密码。
能打开目录并新建文件,说明共享成功。
也可以先在服务器本机自测:
smbclient -L localhost -U smbuser
能列出共享名即表示服务端正常。
如果 Windows 提示“你不能访问此共享文件夹”,优先检查防火墙 445 端口是否放行、valid users 是否包含当前用户、以及 Samba 密码是否设置成功。
容易踩坑的几个点
权限问题最常见。
系统目录权限、Samba 配置里的 valid users 和 write list 三者要一致,否则会出现能登录但无法写入的情况。
SELinux 也可能拦截写入。
CentOS 系如果开启了 SELinux,需要执行:
sudo setsebool -P samba_export_all_rw on
或者给目录打上正确标签:
sudo semanage fcontext -a -t samba_share_t "/srv/share(/.*)?"
sudo restorecon -Rv /srv/share
另外,Windows 10/11 默认可能禁用 SMB1,Samba 新版本默认也不启用,一般不需要改动。
如果客户端是较老的设备,再考虑兼容性设置。
常见疑问
匿名访问怎么配置? 在共享段中把 valid users 改为 guest ok = yes 和 guest account = nobody,同时确保目录权限允许 nobody 读写。
但内网也建议至少用密码认证。
能不能多个用户各自独立目录? 可以。
为每个用户创建单独共享段,path 指向各自目录,valid users 写对应用户名,再通过 write list 控制写入权限。
共享速度慢怎么办? 先确认网络是千兆内网,其次检查服务器磁盘 IO。
Samba 本身性能开销不大,瓶颈通常在网络或硬盘。
如何查看当前连接? 用 smbstatus 可以查看已连接的会话、共享和锁定文件,排查占用时比较有用。
内网服务器文件共享用 Samba 搭建文件服务器,核心就是三件事:系统用户和目录权限、smb.conf 共享段配置、防火墙放行。
按本文顺序执行并验证,多数环境都能一次跑通。
遇到异常时,优先回看权限和防火墙这两部分。