概述

本指南详细记录如何在 Ubuntu Linux 系统上部署 Samba (SMB/CIFS) 文件共享服务,实现与 Windows、macOS 和其他 Linux 设备的文件共享。

环境信息

项目
操作系统 Ubuntu Linux
服务器 IP 192.168.31.10
工作组 WORKGROUP
Samba 版本 4.19.5

第一步:安装 Samba

1
2
3
4
5
6
7
8
# 更新软件包列表
sudo apt update

# 安装 Samba 及相关组件
sudo apt install samba samba-common-bin -y

# 验证安装
smbd --version

第二步:创建 Samba 用户密码

Samba 使用独立的密码系统,需要为 Linux 用户创建 Samba 密码:

1
2
3
4
5
6
# 为现有 Linux 用户创建 Samba 密码
sudo smbpasswd -a leslie

# 系统会提示输入并确认密码
# New SMB password: [输入密码]
# Retype new SMB password: [再次输入]

第三步:配置 smb.conf

编辑 Samba 配置文件:

1
sudo nano /etc/samba/smb.conf

全局配置 [global]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes

共享目录配置

1
2
3
4
5
6
7
8
[leslie]
comment = Leslie Home Directory
path = /home/leslie
browseable = yes
read only = no
create mask = 0755
directory mask = 0755
valid users = leslie

参数说明

参数 说明
path 共享的目录路径
browseable 是否在网络中可见
read only no 表示可读写
create mask 新文件权限
directory mask 新目录权限
valid users 允许访问的用户

第四步:测试配置

1
2
3
4
5
6
# 检查配置文件语法
sudo testparm

# 预期输出应包含:
# Loaded services file OK.
# Server role: ROLE_STANDALONE

第五步:启动服务

1
2
3
4
5
6
7
8
# 重启 Samba 服务
sudo systemctl restart smbd nmbd

# 设置开机自启
sudo systemctl enable smbd nmbd

# 检查服务状态
sudo systemctl status smbd

第六步:防火墙配置

如果使用 UFW 防火墙,需要开放 SMB 端口:

1
2
3
4
5
6
7
8
9
10
11
# 开放 Samba 服务
sudo ufw allow samba

# 或者手动开放端口
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp
sudo ufw allow 137/udp
sudo ufw allow 138/udp

# 重新加载防火墙
sudo ufw reload

客户端连接方式

Windows

  1. 打开”此电脑”
  2. 在地址栏输入: \\192.168.31.10\leslie
  3. 输入用户名和密码
  4. 勾选”记住我的凭据”可保存密码

映射网络驱动器

  • 右键”此电脑” → “映射网络驱动器”
  • 文件夹: \\192.168.31.10\leslie
  • 勾选”登录时重新连接”

macOS

  1. Finder → 前往 → 连接服务器 (Cmd+K)
  2. 服务器地址: smb://192.168.31.10/leslie
  3. 点击”连接”,输入凭据
  4. 可在”钥匙串”中保存密码

Linux

1
2
3
4
5
# 临时挂载
sudo mount -t cifs //192.168.31.10/leslie /mnt/share -o user=leslie

# 永久挂载 (添加到 /etc/fstab)
//192.168.31.10/leslie /mnt/share cifs username=leslie,password=yourpass,uid=1000,gid=1000 0 0

常用管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看 Samba 用户列表
sudo pdbedit -L

# 查看用户详细信息
sudo pdbedit -L -v

# 删除 Samba 用户
sudo smbpasswd -x username

# 修改用户密码
sudo smbpasswd username

# 查看当前连接
sudo smbstatus

# 查看日志
sudo tail -f /var/log/samba/log.smbd

故障排查

问题 1: 无法连接

1
2
3
4
5
6
7
8
# 检查服务是否运行
sudo systemctl status smbd

# 检查端口是否监听
sudo ss -tlnp | grep -E "139|445"

# 检查防火墙
sudo ufw status

问题 2: 权限被拒绝

1
2
3
4
5
6
7
8
# 确保 Samba 用户已创建
sudo pdbedit -L

# 检查目录权限
ls -la /home/leslie

# 确保 valid users 配置正确
testparm -s | grep -A 10 "\[leslie\]"

问题 3: Windows 无法发现

  1. 确保 WORKGROUP 与 Windows 工作组一致
  2. 在 Windows 中启用 SMB 1.0/CIFS 客户端(如需要)
  3. 检查路由器的 AP 隔离设置

安全建议

  1. 强密码: 为 Samba 用户设置复杂密码
  2. 限制访问: 使用 valid usershosts allow 限制访问
  3. 最小权限: 只共享必要的目录
  4. 定期更新: 保持 Samba 版本最新
  5. 内网使用: 避免将 SMB 暴露到公网

进阶配置

添加只读共享

1
2
3
4
5
6
[documents]
comment = Read-only Documents
path = /srv/documents
browseable = yes
read only = yes
guest ok = yes

限制 IP 访问

1
2
3
4
5
[private]
path = /srv/private
hosts allow = 192.168.31.0/24
hosts deny = all
valid users = admin

回收站功能

1
2
3
4
5
6
[share]
path = /srv/share
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = yes
recycle:versions = yes

总结

本指南涵盖了从安装到配置、从连接到排错的完整 SMB 服务部署流程。核心步骤可总结为:

  1. 安装 Samba 包
  2. 创建 Samba 用户密码
  3. 配置 /etc/samba/smb.conf
  4. 启动并启用服务
  5. 配置防火墙规则
  6. 从客户端测试连接

部署日期: 2026年2月22日
服务器 IP: 192.168.31.10
工作组: WORKGROUP