Linux Samba 服务器搭建实战指南:打通 Linux 与 Windows 文件共享
前言
日常办公环境常会混用 Linux 服务器与 Windows 桌面系统,双方直接传输、共享文件存在诸多不便,Samba 作为开源 SMB/CIFS 协议实现,可以搭建跨平台文件共享服务,轻松实现 Windows、Linux 之间的文件互访、协同办公。本文从安装、基础配置、用户认证、服务运维、客户端访问、高级用法、故障排查、安全加固完整讲解 Samba 部署全流程,新手跟着操作即可顺利落地。
一、Samba 服务器简介
Samba 基于 SMB 协议开发,运行在 Linux/Unix 系统,能够模拟 Windows 文件共享与 NetBIOS 网络服务,核心价值:
- 实现 Windows 直接访问 Linux 共享目录,像访问本地文件夹一样读写文件;
- 支持 Linux 客户端挂载 Samba 共享,双向互通;
- 兼具匿名公开共享、账号密码认证私有共享、多用户分组权限管控能力,适配办公、生产各类文件共享场景。
二、安装 Samba 服务器
1、基于 Debian/Ubuntu 系列系统安装
bash
运行
sudo apt update
sudo apt install samba samba-common samba-client -y
2、基于 RHEL/CentOS/Rocky 系列系统安装
旧版 yum 命令:
bash
运行
sudo yum install samba samba-common samba-client -y
新版 dnf(CentOS8+/Rocky8+):
bash
运行
sudo dnf install samba samba-common samba-client -y
3、验证安装是否成功
执行查看版本命令,正常输出版本号即代表安装无误:
bash
运行
samba --version
三、基本全局配置 + 匿名公开共享
Samba 核心主配置文件路径为 /etc/samba/smb.conf,修改配置前养成备份习惯,防止配置出错无法回滚:
bash
运行
# 备份原始配置文件
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
1、编辑全局 [global] 基础配置
bash
运行
sudo vim /etc/samba/smb.conf
写入全局基础参数:
ini
[global]
workgroup = WORKGROUP
server string = Samba File Server %v
netbios name = LINUX-SAMBA
security = user
map to guest = bad user
dns proxy = no
参数释义
- workgroup:工作组名称,需要和 Windows 电脑工作组保持一致;
- server string:Samba 服务器备注描述信息;
- netbios name:局域网浏览显示的服务器 NetBIOS 名称;
- security = user:启用用户账号验证安全模式(主流推荐);
- map to guest = bad user:无效陌生登录用户自动映射为访客用户。
2、创建匿名共享目录并配置共享区段
1)新建共享目录、设置目录归属与权限
bash
运行
# 创建公开共享目录
sudo mkdir -p /samba/public
# 归属改为nobody访客用户,开放匿名读写基础权限
sudo chown -R nobody:nogroup /samba/public
sudo chmod -R 0775 /samba/public
2)smb.conf 文件末尾追加公开共享配置:
ini
[PublicShare]
comment = Open Public Share, Guest Available
path = /samba/public
browseable = yes
writable = yes
guest ok = yes
read only = no
create mask = 0775
directory mask = 0775
- guest ok=yes:开启访客匿名免密访问;
- browseable:局域网列表是否可见该共享;
- writable/read only 控制读写权限。
3、校验配置文件语法正确性
修改完 smb.conf 务必执行语法检测,避免语法错误导致服务启动失败:
bash
运行
sudo testparm
终端无报错提示、正常加载配置即语法合格。
四、用户认证私有共享配置(密码登录访问)
公开匿名共享安全性弱,私密文件建议搭建独立账号密码认证的私有共享
1、先创建 Linux 系统本地用户,再转为 Samba 专属账号
1)新建系统用户 sambaprivate(仅用于 samba 登录,无需登录系统 shell)
bash
运行
sudo useradd sambaprivate
# 设置Linux系统登录密码(可选,日常只用samba密码)
sudo passwd sambaprivate
2)单独添加并设置 Samba 独立登录密码(Windows 访问输入此密码)
bash
运行
sudo smbpasswd -a sambaprivate
执行后按提示重复输入两次 samba 专属密码即可。
2、新建私有目录并添加私有共享配置
1)创建私有目录、归属绑定 sambaprivate 用户
bash
运行
sudo mkdir -p /samba/private
sudo chown -R sambaprivate:sambaprivate /samba/private
sudo chmod -R 0770 /samba/private
2)smb.conf 添加私有共享区块:
ini
[PrivateShare]
comment = Password Protected Private Share
path = /samba/private
valid users = sambaprivate
browseable = yes
writable = yes
guest ok = no
- valid users 限定仅 sambaprivate 用户可访问该共享;guest 关闭访客,必须账号登录。 修改后再次执行
sudo testparm校验语法。
五、启动与管理 Samba 服务进程
Samba 主要运行 smb、nmbd 两个核心服务:
1、即时启动 smb、nmbd 服务
bash
运行
sudo systemctl start smbd nmbd
2、设置开机自动启动,服务器重启自动运行共享服务
bash
运行
sudo systemctl enable smbd nmbd
3、日常查看运行状态,排查运行异常
bash
运行
sudo systemctl status smbd nmbd
显示 active (running) 即为正常运行。
六、防火墙放行 Samba 服务端口(RHEL 系列 firewalld)
生产环境开启防火墙时默认拦截 Samba 访问,需要单独放行 samba 服务:
bash
运行
# 永久添加samba防火墙放行规则
sudo firewall-cmd --permanent --add-service=samba
# 重载防火墙规则立即生效
sudo firewall-cmd --reload
Debian/Ubuntu 默认 ufw 防火墙可单独放行 139、445 端口:
sudo ufw allow samba
七、客户端连接访问 Samba 共享
1、Windows 客户端访问方法
打开 Windows 文件资源管理器,顶部地址栏输入:
plaintext
\\Samba服务器IP地址
回车后可看到 [PublicShare] 匿名公开共享直接进入读写;打开 [PrivateShare] 私有共享会弹出账号密码框,填写sambaprivate用户名 + 刚才设置的 samba 密码即可正常登录访问。
2、Linux 客户端挂载访问 Samba 共享
(1)安装客户端工具
Debian/Ubuntu:
bash
运行
sudo apt install smbclient -y
RHEL/CentOS:
bash
运行
sudo yum install samba-client -y
(2)查看服务器所有共享列表
bash
运行
smbclient -L //服务器IP地址 -U sambaprivate
(3)挂载私有共享到本地目录使用
bash
运行
# 创建本地挂载点
sudo mkdir /mnt/sambamount
# 挂载私有共享
sudo mount -t cifs //服务器IP/PrivateShare /mnt/sambamount -o username=sambaprivate
挂载成功进入 /mnt/sambamount 即可读写私有共享文件;卸载执行umount /mnt/sambamount
八、进阶高级配置
1、多用户分组共享配置(团队部门共享)
适合部门多人协同共享,新建用户组统一管控权限: 1)创建部门用户组、添加组成员
bash
运行
sudo groupadd deptteam
sudo usermod -aG deptteam user1
sudo usermod -aG deptteam user2
# 两个用户分别执行smbpasswd -a 设置samba密码
sudo smbpasswd -a user1
sudo smbpasswd -a user2
2)smb.conf 添加分组共享配置
ini
[DeptShare]
comment = Team Department Group Share
path = /samba/deptshare
valid users = @deptteam
browseable = yes
writable = yes
create mask = 0775
directory mask = 0775
@deptteam代表 deptteam 整个用户组内成员均可访问该共享目录。
2、精细化读写访问控制
单独区分只读用户、读写管理员:
ini
[RestrictShare]
comment = Separate Read/Write Control Share
path = /samba/restrict
valid users = admin @staff
read list = @staff
write list = admin
含义:staff 组成员仅只读浏览,admin 账号拥有读写修改权限。
3、Samba 运行日志独立配置
在 [global] 全局区块添加日志参数,单独留存访问、报错日志便于审计排查:
ini
log file = /var/log/samba/samba_log.%m
max log size = 1000
logging = file
log level = 1
日志按客户端主机拆分存储,后续排查直接实时跟踪日志:
bash
运行
tail -f /var/log/samba/samba_log.*
九、常见故障排查思路
1、Windows 无法连接、找不到共享 优先排查:防火墙有没有放行 samba 服务、smbd/nmbd 服务状态是否 running、执行 testparm 确认配置无语法错误、网络互通 ping 服务器 IP 正常; 2、能连接但是读写权限报错、新建文件失败 排查:底层 Linux 文件夹属主、系统权限、SELinux 安全限制(RHEL 默认开启需单独放行上下文)、smb.conf 内 writable/mask 权限配置是否匹配; 3、认证密码反复登录失败 区分系统用户密码和 smbpasswd 单独设置的 Samba 密码,二者相互独立,登录共享用 smbpasswd 设置的密码,可重新执行 smbpasswd 重置密码; 4、排查访问异常优先实时监控 samba 日志:tail -f /var/log/samba/samba_log.* 定位详细报错信息。
十、Samba 生产安全加固建议
1、定期执行系统更新命令升级 Samba 软件版本,修复已知安全漏洞; 2、防火墙结合 hosts allow 参数限制仅可信办公 IP 段访问 Samba 共享,拒绝陌生外网 IP 连接; 3、所有认证账号设置高强度复杂密码,定期轮换更新密码,禁用弱密码、闲置账号; 4、重要业务场景可部署 SSL 加密 SMB 传输流量,防止局域网传输数据被抓包窃取; 5、常态化定期审计 Samba 访问日志,监控异常登录、批量读写、异地陌生 IP 访问行为,及时处置风险。
结语
通读完整部署流程后,你已经掌握 Samba 从零基础安装、匿名共享、私有认证、团队分组共享、客户端连接、排错、安全加固全套实操能力。日常办公优先用私有认证共享保障安全,兼顾便捷与数据安全;后续进阶还可以深入学习 Samba 域控对接、AD 集成、自动化挂载脚本等高级玩法,整体灵活适配各类跨平台文件协作场景,高效打通 Linux+Windows 混合办公文件流转。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)