在 Ubuntu 24.04 系统上配置 Samba(SMB)共享
在 Ubuntu 24.04 系统上配置 Samba(SMB)共享,将本地目录 /home/shuncom/teleport_backup 共享为 \\192.168.30.54\teleport_backup,请按以下步骤操作:
✅ 第一步:安装 Samba
sudo apt update
sudo apt install samba -y
✅ 第二步:创建或确认共享目录,并设置权限
# 确保目录存在
sudo mkdir -p /home/shuncom/teleport_backup
# 设置属主(建议使用 shuncom 用户)
sudo chown -R shuncom:shuncom /home/shuncom/teleport_backup
# 设置适当权限(根据需求调整)
sudo chmod -R 755 /home/shuncom/teleport_backup
# 或更宽松(如需写入):
# sudo chmod -R 775 /home/shuncom/teleport_backup
⚠️ 注意:Samba 默认不共享用户家目录下的子目录(因安全限制),但通过正确配置可实现。
✅ 第三步:为 Samba 添加用户(必须与系统用户对应)
# 假设你要用 "shuncom" 用户访问共享
sudo smbpasswd -a shuncom
🔐 系统会提示你设置一个 Samba 密码(可以和登录密码不同)。
此用户必须是系统已存在的用户(id shuncom应有输出)。
启用该用户(默认已启用):
sudo smbpasswd -e shuncom
✅ 第四步:配置 Samba 共享(编辑 smb.conf)
备份原配置:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
编辑配置文件:
sudo nano /etc/samba/smb.conf
在文件末尾添加以下内容:
[teleport_backup]
comment = Teleport Backup Share
path = /home/shuncom/teleport_backup
browseable = yes
writable = yes
guest ok = no
valid users = shuncom
create mask = 0644
directory mask = 0755
force user = shuncom
参数说明:
| 配置项 | 作用 |
|---|---|
browseable = yes |
网络邻居中可见 |
writable = yes |
允许写入 |
guest ok = no |
禁用匿名访问 |
valid users = shuncom |
仅允许 shuncom 用户访问 |
force user = shuncom |
所有操作以 shuncom 身份执行,避免权限混乱 |
💡 如果你希望多个用户访问,可将
valid users = user1,user2,并为每个用户执行smbpasswd -a。
✅ 第五步:重启 Samba 服务
sudo systemctl restart smbd nmbd
sudo systemctl enable smbd nmbd # 开机自启
✅ 第六步:配置防火墙(如果启用 UFW)
Ubuntu 24.04 默认可能启用 ufw,需放行 SMB 端口:
sudo ufw allow samba
# 或手动开放端口:
# sudo ufw allow 139/tcp
# sudo ufw allow 445/tcp
查看状态:
sudo ufw status
✅ 第七步:从 Windows 访问测试
在 Windows 文件资源管理器地址栏输入:
\\192.168.30.54\teleport_backup
- 弹出登录框时,输入:
- 用户名:
shuncom - 密码:你在
smbpasswd -a shuncom时设置的 Samba 密码
- 用户名:
📌 注意:不要用 Windows 的“记住凭据”,避免后续混淆。
🔍 故障排查
1. 无法访问?检查服务状态:
sudo systemctl status smbd
2. 权限被拒绝?
- 确认
/home/shuncom目录对其他用户有 执行权限(x):chmod o+x /home/shuncom否则 Samba 无法进入家目录。
3. 测试本地连接:
smbclient -L localhost -U shuncom
4. 查看日志:
sudo tail -f /var/log/samba/log.smbd
✅ 最终效果
- Windows 访问:
\\192.168.30.54\teleport_backup - 需输入用户名
shuncom+ Samba 密码 - 可读写,文件属主为
shuncom
💡 安全建议:
- 不要设置
guest ok = yes(除非内网可信)- 定期更新系统:
sudo apt upgrade- 如仅限内网使用,可绑定 IP(在
smb.conf的[global]中加interfaces = 192.168.30.54/24)
完成以上步骤,你的 SMB 共享即可正常使用!
你已确认 445/139 端口通,Samba 服务运行正常,共享配置也基本正确,但 Windows 无法访问 \\192.168.30.54\teleport_backup。
结合你提供的信息(尤其是 /home/shuncom 的权限),根本原因极可能是:
❌
/home/shuncom目录权限为drwxr-x--x(即751),其他用户(包括 Samba 进程)没有进入(execute)权限!
虽然 teleport_backup 子目录是 755,但 Linux 要求父目录必须有 x 权限才能访问子目录。Samba 默认以 nobody 或指定用户身份访问,若无权限进入 /home/shuncom,就会被拒绝。
✅ 解决方案
🔧 步骤 1:修复家目录权限(关键!)
# 给其他用户添加 "进入" 权限(x)
sudo chmod o+x /home/shuncom
验证:
ls -ld /home/shuncom
# 应显示:drwxr-x--x → 变为 drwxr-x--x(最后一位 x 表示 others 有 execute 权限)
# 实际权限应为 751 → 但至少 others 有 x(即权限位最后一位是 1, 3, 5, 7)
💡 更安全的做法(推荐):
# 只允许特定组访问(如 sambashare) sudo groupadd sambashare sudo usermod -aG sambashare shuncom sudo chgrp sambashare /home/shuncom sudo chmod 750 /home/shuncom # owner:rwx, group:rx, others: none但简单场景下
chmod o+x足够(内网环境)。
🔧 步骤 2:确认 Samba 用户已正确设置
# 查看 Samba 用户列表
sudo pdbedit -L
# 确保 shuncom 在其中
# 如果没有,重新添加:
sudo smbpasswd -a shuncom # 设置密码
sudo smbpasswd -e shuncom # 启用
⚠️ 注意:Samba 密码 ≠ 系统登录密码,必须单独设置!
🔧 步骤 3:检查 Samba 配置是否生效
你的 smb.conf 末尾配置基本正确,但建议在 [global] 段落中显式指定安全模式(Ubuntu 24.04 默认可能较严格):
编辑 /etc/samba/smb.conf,在 [global] 部分添加或确认以下行:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = ubuntu24-00
security = user
map to guest = never
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
server min protocol = NT1 # ← 仅当 Windows 是 Win10/11 且无法连接时临时加(不推荐长期用)
🚫 不要随意加
server min protocol = NT1,除非你确定是协议问题(Win10 默认禁用 SMB1)。
先尝试不加,优先解决权限问题。
🔧 步骤 4:重启 Samba 服务
sudo systemctl restart smbd nmbd
🔧 步骤 5:从 Windows 测试(关键操作)
-
先清除 Windows 凭据缓存(非常重要!):
- 按
Win + R,输入cmd打开命令提示符 - 执行:
net use * /delete /y - 或手动删除:
控制面板 > 凭据管理器 > Windows 凭据 > 删除与 192.168.30.54 相关的条目
- 按
-
使用完整凭据访问:
- 在文件资源管理器输入:
\\192.168.30.54\teleport_backup - 弹出登录框时:
- 用户名:
shuncom(或.\shuncom) - 密码:你在
smbpasswd -a shuncom时设置的 Samba 密码 - 勾选“记住凭据”(可选)
- 用户名:
- 在文件资源管理器输入:
🔍 附加排查命令(在 Ubuntu 上)
# 1. 本地测试共享是否可见
smbclient -L //localhost -U shuncom
# 2. 查看实时日志(另开终端)
sudo tail -f /var/log/samba/log.smbd
# 3. 检查 SELinux/AppArmor(Ubuntu 默认无 SELinux,但有 AppArmor)
sudo aa-status | grep samba # 通常不影响,可忽略
✅ 总结:最可能的原因和修复
| 问题 | 修复 |
|---|---|
/home/shuncom 权限缺少 o+x |
sudo chmod o+x /home/shuncom |
| 未设置 Samba 密码 | sudo smbpasswd -a shuncom |
| Windows 缓存了错误凭据 | net use * /delete 清除 |
💡 90% 的类似问题都是因为家目录权限不足导致的!
执行 chmod o+x /home/shuncom 后,Windows 应能正常访问共享。如果仍有问题,请贴出 tail -f /var/log/samba/log.smbd 在 Windows 尝试连接时的具体错误日志。