Ubuntu与Windows文件共享:Samba配置全指南
2026/7/18 1:58:10 网站建设 项目流程

1. 为什么需要Samba文件共享

在混合操作系统环境中,Windows和Linux之间的文件共享一直是个痛点。Windows默认使用SMB/CIFS协议,而Linux则更习惯NFS。Samba的出现完美解决了这个跨平台文件共享的难题。

我最近在工作室部署了一套开发环境:主力开发机是Windows 11,而测试服务器跑的是Ubuntu 22.04 LTS。每天需要在两个系统间频繁传输代码和测试数据,最初用U盘倒来倒去,后来试过SFTP,但都不够优雅。直到配置了Samba,现在可以直接在Windows资源管理器里像访问本地文件夹一样操作Linux服务器上的文件。

提示:Samba不仅支持文件共享,还能集成到Windows域环境,实现账号统一认证。不过本文聚焦基础的文件共享功能。

2. 安装前的准备工作

2.1 系统环境确认

首先确认你的Ubuntu版本:

lsb_release -a

我使用的是Ubuntu 22.04.3 LTS,内核版本5.15.0-76-generic。不同Ubuntu版本的安装命令可能略有差异。

2.2 网络配置检查

确保两台机器在同一局域网:

ip a

Windows端用ipconfig查看IP。建议给Ubuntu服务器配置静态IP,避免DHCP导致的IP变化影响连接。编辑/etc/netplan/00-installer-config.yaml配置静态IP后执行:

sudo netplan apply

2.3 防火墙设置

Ubuntu默认的UFW防火墙会阻止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

3. Samba服务安装与基础配置

3.1 安装Samba软件包

更新软件源后安装:

sudo apt update sudo apt install samba -y

安装完成后检查版本:

smbd --version

我安装的是Version 4.15.13-Ubuntu。

3.2 创建共享目录

建议在/home下创建共享文件夹:

mkdir ~/shared_folder sudo chmod -R 777 ~/shared_folder

实际生产环境应该设置更精细的权限,这里为了方便演示给了777。

3.3 配置Samba主文件

备份原始配置文件:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

编辑配置文件:

sudo nano /etc/samba/smb.conf

在文件末尾添加:

[shared] comment = Ubuntu Shared Folder path = /home/your_username/shared_folder read only = no browsable = yes create mask = 0777 directory mask = 0777 guest ok = yes

关键参数说明:

  • path: 共享目录的实际路径
  • read only: 是否只读
  • browsable: 是否在网络上可见
  • create mask: 新建文件权限
  • guest ok: 允许匿名访问

3.4 创建Samba用户

虽然我们允许了匿名访问,但建议还是创建专用用户:

sudo smbpasswd -a your_username

系统会提示输入密码,这个密码是Windows连接时使用的,可以与系统密码不同。

3.5 重启Samba服务

使配置生效:

sudo systemctl restart smbd sudo systemctl enable smbd

检查服务状态:

sudo systemctl status smbd

4. Windows端连接配置

4.1 确保网络发现开启

在Windows搜索框输入"网络和共享中心" → 更改高级共享设置 → 启用网络发现和文件共享。

4.2 映射网络驱动器

打开文件资源管理器 → 此电脑 → 映射网络驱动器:

  • 驱动器号:选择任意未使用的字母(如Z:)
  • 文件夹:输入\\ubuntu_ip\shared
  • 勾选"重新连接时重新连接"

如果提示输入凭证,使用之前设置的Samba用户名和密码。

4.3 连接问题排查

如果连接失败:

  1. 先在Windows命令提示符ping Ubuntu IP确认网络连通性
  2. 检查Ubuntu防火墙设置
  3. 在Ubuntu上测试Samba服务是否正常:
smbclient -L localhost -U%

5. 高级配置与安全加固

5.1 多用户权限管理

生产环境应该为不同用户设置不同权限。首先创建用户组:

sudo groupadd smbusers sudo usermod -aG smbusers user1 sudo usermod -aG smbusers user2

然后在smb.conf中配置:

[secured_share] path = /secured_data valid users = @smbusers write list = user1 read list = user2

5.2 日志监控

启用详细日志有助于排查问题:

[global] log level = 2 log file = /var/log/samba/log.%m max log size = 1000

查看日志:

tail -f /var/log/samba/log.your_client

5.3 传输加密

在smb.conf的[global]部分添加:

[global] server min protocol = SMB2 encrypt passwords = yes smb encrypt = required

6. 常见问题解决方案

6.1 Windows提示"无法访问共享"

可能原因:

  1. 网络不通 → 检查IP和防火墙
  2. Samba服务未运行 →sudo systemctl restart smbd
  3. 权限问题 → 检查共享目录权限和selinux状态

6.2 文件权限混乱

Linux和Windows权限系统不同可能导致问题。建议:

  1. 在smb.conf中统一权限设置
  2. 使用force userforce group参数
  3. 避免在Windows端直接修改Linux文件权限

6.3 大文件传输失败

调整Samba缓冲区大小:

[global] socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536 min receivefile size = 16384 use sendfile = yes

7. 性能优化技巧

7.1 禁用不必要的功能

如果只是简单文件共享,可以禁用打印服务:

[global] load printers = no printing = bsd printcap name = /dev/null disable spoolss = yes

7.2 调整缓存参数

[global] strict locking = no oplocks = yes kernel oplocks = yes aio read size = 16384 aio write size = 16384

7.3 多网卡绑定

如果有多个网卡,可以配置多通道传输:

[global] server multi channel support = yes aio read size = 1 aio write size = 1

8. 实际使用体验分享

在我的开发环境中,Samba共享已经稳定运行了6个月。几点实用建议:

  1. 对于代码项目,建议在Windows端使用支持Linux行尾符的编辑器(如VS Code)
  2. 大文件(如虚拟机镜像)传输建议先用tar分割打包
  3. 定期检查日志,我设置了一个简单的日志监控脚本:
#!/bin/bash tail -n 50 /var/log/samba/log.* | grep -i "error\|fail\|denied"

配置过程中最耗时的部分是权限调试。Linux的ACL和Windows的NTFS权限需要仔细对应。一个实用的调试命令是:

getfacl /path/to/shared_folder

最后,如果需要在ARM架构的Ubuntu(如树莓派)上安装Samba,可能需要从源码编译。基本步骤:

wget https://download.samba.org/pub/samba/stable/samba-4.15.13.tar.gz tar -xzvf samba-4.15.13.tar.gz cd samba-4.15.13 ./configure make -j4 sudo make install

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询