samba是linux与windows文件共享的标准解决方案,需依次安装服务、创建配置共享目录、编辑smb.conf、添加samba用户、启动并启用服务及开放防火墙端口。

如果您希望在Linux系统中实现与Windows客户端的文件共享,Samba是标准且兼容性良好的解决方案。以下是完成Samba文件共享配置的具体步骤:
一、安装Samba服务
在大多数Linux发行版中,Samba未默认安装,需通过包管理器手动安装。安装过程会同时部署smbd和nmbd两个核心守护进程,分别负责文件共享服务和NetBIOS名称解析。
1、对于基于Debian/Ubuntu的系统,执行:sudo apt update && sudo apt install samba
2、对于基于RHEL/CentOS/Rocky Linux/AlmaLinux的系统,执行:sudo dnf install samba samba-common-tools
3、验证安装是否成功:smbd --version
二、创建共享目录并设置权限
共享目录需具备明确的文件系统权限和SELinux上下文(如启用SELinux),否则Samba进程可能因权限拒绝而无法访问该路径。
1、新建专用共享目录:sudo mkdir -p /srv/samba/shared
2、设置目录属主为samba用户组(如存在sambashare组)或通用组:sudo chgrp sambashare /srv/samba/shared
3、赋予组读写执行权限:sudo chmod 2775 /srv/samba/shared
4、若系统启用SELinux,需添加samba_share_t类型:sudo semanage fcontext -a -t samba_share_t "/srv/samba/shared(/.*)?"
5、应用SELinux上下文变更:sudo restorecon -Rv /srv/samba/shared
三、配置smb.conf主配置文件
smb.conf是Samba服务的核心配置文件,需在[global]节中定义基础行为,并新增独立的共享节以声明可访问路径及其访问策略。
1、备份原始配置:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
2、使用文本编辑器打开配置文件:sudo nano /etc/samba/smb.conf
3、在[global]段末尾添加以下行以启用用户认证和UTF-8支持:security = user
4、在文件末尾新增共享定义节:[shared]
5、在[shared]节下逐行添加:path = /srv/samba/shared
6、继续添加:browseable = yes
7、继续添加:read only = no
8、继续添加:valid users = @sambashare
四、创建Samba专用用户账户
Samba不直接复用系统密码,需为每个需访问共享的用户单独设置Samba密码。该账户必须已在系统中存在,且密码独立存储于/etc/samba/smbpasswd中。
1、确保目标用户已存在于系统中,例如user1:sudo useradd -M -G sambashare user1
2、为该用户设置Samba密码(不显示输入内容):sudo smbpasswd -a user1
3、启用该用户账户(如被禁用):sudo smbpasswd -e user1
4、确认用户已加入sambashare组:groups user1
五、启动并启用Samba服务
Samba依赖smbd(提供CIFS/SMB协议服务)和nmbd(提供NetBIOS名称服务)两个服务协同工作。防火墙需放行对应端口,且服务应设为开机自启。
1、启动smbd服务:sudo systemctl start smbd
2、启动nmbd服务:sudo systemctl start nmbd
3、启用开机自启:sudo systemctl enable smbd nmbd
4、开放防火墙中的Samba端口(TCP 139, 445;UDP 137, 138):sudo ufw allow 'Samba'(Ubuntu)或sudo firewall-cmd --permanent --add-service=samba && sudo firewall-cmd --reload(RHEL系)
5、检查服务运行状态:sudo systemctl status smbd nmbd










