需安装配置samba服务实现跨平台文件共享:一、依发行版用apt/dnf/yum安装samba及相关组件;二、编辑/etc/samba/smb.conf,设workgroup、security等全局参数及[shared]共享段;三、创建/srv/samba/shared目录,设权限与selinux上下文;四、用smbpasswd添加samba用户密码;五、启动并启用smbd与nmbd服务;六、通过ufw或firewalld开放139/445(tcp)和137/138(udp)端口。

如果您希望在Linux系统中搭建文件共享服务,使Windows、macOS或其他Linux设备能够访问共享目录,则需要安装并配置Samba服务。以下是完成Samba安装与基础共享设置的具体步骤:
一、安装Samba软件包
Samba由samba和samba-common等核心组件构成,不同发行版使用对应的包管理器进行安装。安装过程会部署服务守护进程、配置工具及依赖库。
1、在基于Debian/Ubuntu的系统中,执行:
sudo apt update && sudo apt install samba samba-common-bin
2、在基于RHEL/CentOS 8+/Rocky Linux/AlmaLinux系统中,执行:
sudo dnf install samba samba-common-tools
3、在CentOS 7或早期RHEL系统中,执行:
sudo yum install samba samba-client samba-common
二、配置Samba主配置文件
smb.conf是Samba的核心配置文件,定义全局参数与共享资源规则。修改前建议备份原始配置,确保语法正确可避免服务启动失败。
1、使用文本编辑器打开配置文件:
sudo nano /etc/samba/smb.conf
2、在[global]段落末尾添加以下基础参数:
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
security = user
map to guest = bad user
3、在文件末尾新增一个共享定义段落:
[shared]
path = /srv/samba/shared
browseable = yes
read only = no
guest ok = yes
create mask = 0644
directory mask = 0755
三、创建共享目录并设置权限
共享目录需具备适当的文件系统权限与SELinux上下文(如启用),否则Samba进程无法读写该路径。
1、新建共享目录:
sudo mkdir -p /srv/samba/shared
2、设置目录归属为sambashare组,并开放组写权限:
sudo chown root:sambashare /srv/samba/shared && sudo chmod 2775 /srv/samba/shared
3、若系统启用SELinux,执行:
sudo semanage fcontext -a -t samba_share_t "/srv/samba/shared(/.*)?" && sudo restorecon -Rv /srv/samba/shared
四、添加Samba用户并设置密码
Samba使用独立于系统用户的密码数据库,需通过smbpasswd命令注册用户。即使用户已存在于Linux系统中,也必须为其单独设置Samba密码。
1、将当前用户加入sambashare组(以获得目录写入权限):
sudo usermod -aG sambashare $USER
2、为指定用户名(例如ubuntu)添加Samba账户:
sudo smbpasswd -a ubuntu
3、按提示输入并确认Samba专用密码,该密码与系统登录密码无关。
五、启动并启用Samba服务
Samba包含两个关键服务:smbd提供文件与打印共享,nmbd处理NetBIOS名称解析。两者均需运行才能实现完整功能。
1、启动服务:
sudo systemctl start smbd nmbd
2、设置开机自启:
sudo systemctl enable smbd nmbd
3、检查服务状态是否为active (running):
sudo systemctl status smbd nmbd
六、配置防火墙放行Samba端口
默认情况下,防火墙会阻止Samba通信所需端口。需手动开放TCP 139、445及UDP 137、138。
1、在UFW(Ubuntu)中执行:
sudo ufw allow 'Samba'
2、在firewalld(RHEL/CentOS/Rocky)中执行:
sudo firewall-cmd --permanent --add-service=samba && sudo firewall-cmd --reload
3、验证端口监听状态:
sudo ss -tuln | grep -E ':(139|445)'









