如何在Ubuntu上安装和配置Samba:完整分步指南
Samba 是一个功能强大的开源软件套件,可以在运行 Windows 和类 Unix 操作系统(如 Ubuntu)的计算机之间实现无缝文件和打印共享。通过安装和正确配置 Samba,您可以在 Linux 和 Windows 环境之间架起桥梁,允许两个平台上的用户通过本地或广域网共享文件、目录,甚至打印机。
无论您是在管理家庭实验室、小型企业网络还是生产服务器环境,本综合指南都会逐步指导您在 Ubuntu 上安装、配置和保护 Samba — 包括大多数教程都会跳过的高级选项。
前置条件
开始之前,请确保您拥有:
- 运行 Ubuntu 20.04、22.04 或 24.04 的服务器或机器
- 对系统的 Sudo 或 root 访问权限
- 对 Linux 命令行的基本了解
- 您想要连接的机器之间的网络连接
如果您在远程服务器上运行 Samba,可靠且高性能的托管环境至关重要。来自 AlexHost 的 VPS 托管为您提供完整的 root 访问权限、专用资源和完全按照您的需求配置服务器的灵活性。
第1步:更新系统软件包
在安装任何新软件之前,更新系统的软件包索引并将现有软件包升级到最新版本至关重要。这确保了兼容性并防止已知漏洞。
sudo apt update && sudo apt upgrade -y在继续之前,请等待该过程完成。
第 2 步:安装 Samba
使用 APT 包管理器安装 Samba 包:
sudo apt install samba -y安装完成后,通过检查 Samba 版本来验证安装是否成功:
smbd --version您应该看到类似以下的输出:
Version 4.15.13-Ubuntu您也可以验证 Samba 服务是否正在运行:
sudo systemctl status smbd输出应显示服务为 active (running)。
第 3 步:备份默认 Samba 配置文件
在进行任何更改之前,始终备份原始配置文件。这样可以在出现问题时恢复默认设置:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak这是许多指南忽视但经验丰富的系统管理员始终遵循的最佳实践。
第4步:创建和配置共享目录
4.1 创建目录
决定要在网络上共享的目录。在本指南中,我们将在主目录内创建一个名为 shared 的专用文件夹:
mkdir ~/shared4.2 设置目录权限
在目录上设置适当的权限。对于需要多个用户具有读写访问权限的共享环境:
chmod 777 ~/shared> 安全提示:chmod 777 设置向所有用户授予完全的读、写和执行权限。虽然便于测试,但不建议在生产环境中使用。在生产设置中,使用更严格的权限,例如 chmod 770,并通过组成员身份管理访问。
第5步:配置Samba — 编辑smb.conf
使用文本编辑器打开主Samba配置文件:
sudo nano /etc/samba/smb.conf滚动到文件末尾并添加以下配置块:
[SharedFolder]
path = /home/username/shared
available = yes
valid users = username
read only = no
browsable = yes
public = yes
writable = yes将username替换为您实际的Ubuntu系统用户名。
理解每个指令
| 指令 | 描述 |
|---|---|
path | 被共享目录的绝对路径 |
available | 共享是否对用户可用 |
valid users | 限制对列出的用户的访问 |
read only | 设置为no以允许写入访问 |
browsable | 浏览网络时共享是否显示 |
public | 允许无需身份验证的访问(谨慎使用) |
writable | 允许用户向共享写入文件 |
进行更改后,按CTRL + O保存文件,然后按Enter,最后按CTRL + X退出。
验证配置
重启Samba之前,测试您的配置文件是否存在语法错误:
testparm此命令解析smb.conf文件并报告任何问题。在继续之前修复任何错误。
第 6 步:创建 Samba 用户账户
Samba 维护自己的密码数据库,与标准 Linux 系统密码分开。任何需要访问共享的用户都必须添加 Samba 特定的密码。
sudo smbpasswd -a username系统将提示您输入并确认密码。从远程 Windows 或 Linux 机器连接到共享文件夹时需要此密码。
> 提示:为每个 Samba 用户使用强密码且唯一的密码。避免重复使用系统密码。
要在 Samba 中启用用户账户(如果之前已禁用):
sudo smbpasswd -e username第 7 步:配置防火墙
如果您的 Ubuntu 服务器上启用了 UFW(简化防火墙),您需要允许 Samba 流量通过防火墙:
sudo ufw allow samba验证规则已添加:
sudo ufw statusSamba 使用以下端口:
- TCP 445 — SMB over TCP(主要)
- TCP 139 — NetBIOS 会话服务
- UDP 137 & 138 — NetBIOS 名称和数据报服务
第 8 步:重启并启用 Samba 服务
通过重启 Samba 服务来应用您的配置更改:
sudo systemctl restart smbd
sudo systemctl restart nmbd启用两个服务在系统启动时自动启动:
sudo systemctl enable smbd
sudo systemctl enable nmbdnmbd 服务处理 NetBIOS 名称解析,这对于 Windows 客户端在本地网络上按名称发现您的 Samba 服务器很重要。
第9步:从Windows系统访问共享文件夹
从同一网络上的任何Windows计算机,您现在可以连接到Ubuntu Samba共享:
- 打开文件浏览器
- 在地址栏中,输入Ubuntu机器的网络路径:
ubuntu_ip_addressSharedFolder将ubuntu_ip_address替换为Ubuntu服务器的实际IP地址(例如,192.168.1.100SharedFolder)
- 出现提示时,输入您在第6步中配置的Samba用户名和密码
- 共享文件夹现在将出现在文件浏览器中,您可以像处理任何本地文件夹一样读取、写入、复制和删除文件
将共享映射为网络驱动器(可选)
为了持久访问,您可以在Windows中将Samba共享映射为网络驱动器:
- 在文件浏览器中右键单击此电脑
- 选择映射网络驱动器
- 选择驱动器号并输入网络路径
- 勾选登录时重新连接以实现自动挂载
步骤 10:从另一个 Linux 系统访问 Samba 共享
在另一台 Linux 机器上,您可以使用 smbclient 命令行工具连接到 Samba 共享。
首先,如果尚未安装 smbclient,请安装它:
sudo apt install smbclient -y然后连接到共享:
smbclient //ubuntu_ip_address/SharedFolder -U username在提示时输入 Samba 密码。您将进入一个交互式 FTP 类似的 shell,其中可以使用 ls、get、put 和 cd 等命令来导航和传输文件。
在 Linux 上挂载 Samba 共享
为了获得更无缝的体验,您可以使用 cifs-utils 将 Samba 共享挂载为本地文件系统:
sudo apt install cifs-utils -y
sudo mkdir /mnt/samba_share
sudo mount -t cifs //ubuntu_ip_address/SharedFolder /mnt/samba_share -o username=username,password=yourpassword要使挂载在重启后持久存在,请在 /etc/fstab 中添加一个条目:
//ubuntu_ip_address/SharedFolder /mnt/samba_share cifs username=username,password=yourpassword,_netdev 0 0> 安全提示:不要在 /etc/fstab 中存储凭据,而应使用具有受限权限的凭据文件。
第11步:高级Samba配置选项
Samba的smb.conf支持广泛的指令,让您对文件共享环境进行细粒度控制。以下是最有用的高级选项:
只读访问
要防止用户修改共享中的文件,请设置:
read only = yes访客访问(匿名共享)
要允许用户在没有密码的情况下连接:
guest ok = yes
public = yes> 仅在受信任的隔离网络上使用访客访问。切勿在面向公众的服务器上启用它。
按IP地址限制访问
要限制哪些计算机可以连接到共享:
hosts allow = 192.168.1.0/24
hosts deny = ALL这将访问限制为仅192.168.1.x子网上的计算机。
多个共享文件夹
您可以通过向smb.conf添加其他块来定义任意数量的共享:
[Documents]
path = /home/username/documents
valid users = username
read only = no
writable = yes
[Backups]
path = /srv/backups
valid users = admin
read only = yes
browsable = no设置最大连接数
要限制对共享的同时连接数:
max connections = 10强制使用特定用户或组
要确保所有文件都以特定用户或组所有权创建:
force user = samba_user
force group = samba_group第12步:保护您的Samba安装
安全至关重要,特别是如果您的Samba服务器可在本地网络之外访问。遵循以下加固最佳实践:
1. 禁用来宾访问
除非明确需要,否则始终禁用匿名访问:
map to guest = Never2. 使用强密码
为所有Samba用户强制使用强密码和唯一密码。避免使用字典词汇,并使用大写字母、小写字母、数字和符号的组合。
3. 限制共享可见性
在敏感共享上设置browsable = no,使其在浏览网络时不出现。知道确切路径的用户仍然可以连接。
4. 限制共享目录的权限
应用最小权限原则——仅授予用户实际需要的权限。避免在生产环境中使用chmod 777。
5. 将Samba绑定到特定接口
如果您的服务器有多个网络接口,仅将Samba绑定到内部接口:
[global]
interfaces = eth0 lo
bind interfaces only = yes6. 启用日志记录
启用Samba日志记录以监控访问并检测可疑活动:
[global]
log file = /var/log/samba/log.%m
max log size = 1000
log level = 17. 保持Samba更新
定期更新Samba以修补已知的安全漏洞:
sudo apt update && sudo apt upgrade samba -y为您的 Samba 服务器选择合适的托管环境
Samba 文件服务器的性能和可靠性在很大程度上取决于底层基础设施。以下是根据您的使用情况需要考虑的一些托管选项:
- 小型团队和个人项目: 共享网络托管为轻量级工作负载提供了经济实惠的入门选择。
- 不断增长的企业和开发团队: VPS 托管提供专用资源、完整的 root 访问权限以及运行 Samba 和其他服务所需的可扩展性。
- 高性能或企业工作负载: 专用服务器提供最大的性能、存储容量和网络吞吐量 — 非常适合大规模文件共享环境。
- AI 和数据密集型应用程序:如果您在运行 Samba 的同时还要运行机器学习或数据处理工作负载,GPU 托管提供您所需的计算能力。
对于还需要托管控制面板体验的团队,带有 cPanel 的 VPS 简化了服务器管理,同时仍然为您提供安装和配置 Samba 的灵活性。
Samba 常见问题故障排除
无法从 Windows 连接
- 验证 Samba 服务正在运行:
sudo systemctl status smbd - 检查防火墙规则:
sudo ufw status - 确认 IP 地址正确且可访问:
ping ubuntu_ip_address - 确保用户名和密码与使用
smbpasswd设置的内容匹配
访问共享时权限被拒绝
- 检查目录权限:
ls -la ~/shared - 验证
smb.conf中的valid users指令与 Samba 用户名匹配 - 确认用户已使用
smbpasswd -a username添加
Samba 共享在网络上不可见
- 确保
nmbd正在运行:sudo systemctl status nmbd - 在共享配置中设置
browsable = yes - 检查 Windows 计算机和 Ubuntu 服务器是否在同一子网上
编辑 smb.conf 后出现配置错误
- 运行
testparm以识别语法错误 - 如需要,恢复备份:
sudo cp /etc/samba/smb.conf.bak /etc/samba/smb.conf
结论
在Ubuntu上安装和配置Samba是在Linux和Windows系统之间启用跨平台文件共享的最有效方法之一。通过遵循本指南,您已经学会了如何:
- 安装Samba并验证安装
- 创建和配置具有适当权限的共享目录
- 添加Samba用户并管理身份验证
- 配置防火墙以允许Samba流量
- 从Windows和Linux客户端访问共享
- 应用高级配置选项以进行访问控制和性能优化
- 加强您的Samba安装以防止常见安全威胁
使用正确的服务器基础设施和正确配置的Samba设置,您可以构建一个可靠、安全且高性能的文件共享环境,为Linux和Windows用户无缝服务。无论您是在本地计算机上还是在基于云的VPS Hosting环境中运行Samba,本指南中的原则都将帮助您充分利用您的部署。
