在Linux系统中搭建Samba服务器可以实现Windows与Linux系统之间的文件共享,使Windows用户能够像访问本地磁盘一样访问Linux文件系统,以下是详细的安装与配置步骤,以Ubuntu/Debian系统为例,其他发行版(如CentOS/RHEL)可使用yum install samba sambacommon或dnf install samba进行安装,核心配置逻辑基本一致。

安装Samba服务
首先更新系统软件包列表,然后安装Samba相关组件,打开终端,执行以下命令:
sudo apt update sudo apt install samba sambacommon y
安装完成后,通过systemctl status smbd检查Samba服务状态,若未启动则执行sudo systemctl start smbd并设置开机自启sudo systemctl enable smbd。
创建共享目录并设置权限
在Linux文件系统中创建一个用于共享的目录,例如/home/share,并设置适当的读写权限:
sudo mkdir p /home/share sudo chmod 777 /home/share # 临时开放所有权限,生产环境建议按需设置 sudo chown R nobody:nogroup /home/share # 设置所有者为nobody用户组,符合Samba默认配置
配置Samba核心文件
Samba的主配置文件为/etc/samba/smb.conf,建议先备份原文件:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
使用文本编辑器(如nano)打开并编辑配置文件:
sudo nano /etc/samba/smb.conf
在文件末尾添加以下共享目录配置(可根据需求调整参数):
[global] workgroup = WORKGROUP # Windows默认工作组名,需与Windows一致 netbios name = LINUXSAMBA # 设置Samba服务器在网络中的名称 security = user # 安全模式,user表示需要用户名密码访问 map to guest = bad user # 拒绝匿名用户访问,需有效账户 [share] comment = Public Share # 共享目录描述 path = /home/share # 共享目录路径 browsable = yes # 是否在网络中可见 writable = yes # 允许写入 guest ok = no # 禁止匿名访问 valid users = @smbgroup # 仅允许smbgroup组成员访问(可选) create mask = 0664 # 新建文件权限 directory mask = 0775 # 新建目录权限
参数说明:

workgroup:需与Windows计算机的工作组名称一致(通常为WORKGROUP或HOME),可在Windows的“系统属性→计算机名→更改”中查看。security = user:要求用户提供合法的Linux系统账户及密码,若需匿名访问可改为security = share(但存在安全风险,不推荐生产环境使用)。
创建Samba用户并设置密码
Samba的账户需基于Linux系统账户,但密码独立于系统密码,假设需创建用户smbuser,执行以下步骤:
- 创建Linux系统账户(若已存在可跳过):
sudo useradd m s /bin/false smbuser # m创建家目录,s禁用shell登录
- 为该用户设置Samba专用密码:
sudo smbpasswd a smbuser
按提示输入两次密码即可,若需修改密码,再次执行
smbpasswd a smbuser;删除用户使用sudo smbpasswd x smbuser。
配置防火墙规则
若系统启用了UFW防火墙,需开放Samba默认端口(139/tcp、445/tcp):
sudo ufw allow samba
对于CentOS/RHEL系统,使用firewallcmd permanent addservice=samba并重载防火墙firewallcmd reload。
重启Samba服务并测试
配置完成后,重启Samba服务使配置生效:
sudo systemctl restart smbd nmbd # nmbd负责NetBIOS名称解析
测试方法:
- 在Windows文件资源管理器地址栏输入
\Linux服务器IP地址share(如\192.168.1.100share),输入用户名smbuser及设置的密码即可访问共享目录。 - 在Linux端使用
smbclient工具测试:smbclient L //localhost/share U smbuser
输入密码后若能看到共享文件列表,则配置成功。

常见问题排查
-
无法访问共享目录,提示“拒绝访问”:
- 检查共享目录权限:
ls ld /home/share确保用户有读写权限; - 确认Samba用户密码是否正确:
sudo smbpasswd x smbuser后重新添加密码; - 查看Samba日志:
/var/log/samba/log.smbd定位错误信息。
- 检查共享目录权限:
-
Windows中无法搜索到Samba服务器:
- 确保Windows和Linux在同一局域网,且关闭Windows的“网络发现”限制;
- 检查
/etc/samba/smb.conf中的browsable = yes和netbios name配置是否正确; - 在Linux端执行
sudo testparm检查配置文件语法是否正确。
相关问答FAQs
Q1: 如何实现Samba共享目录的只读访问?
A: 在smb.conf的共享目录配置中,添加read only = yes参数,同时确保writable = no(或删除writable = yes)。
[readonly_share] path = /home/readonly writable = no read only = yes
这样用户只能读取文件,无法修改或新建文件。
Q2: Samba服务启动失败,提示“failed to load services file”怎么办?
A: 通常是由于smb.conf配置语法错误导致,可使用sudo testparm命令检查配置文件语法,根据提示修复错误(如缺少分号、中文字符等),若问题依旧,恢复备份配置文件sudo cp /etc/samba/smb.conf.bak /etc/samba/smb.conf后重新编辑并重启服务。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/290630.html