局域网内不同设备之间传文件,最方便的方式就是网络共享。经测试 Ubuntu 20.04 ~ 26.04(含衍生版如 Linux Mint 等)均适用。本文涵盖 Linux 作为服务端共享目录,以及 Linux/Windows 客户端挂载 Samba 共享的完整操作。
服务端:Linux 共享目录给局域网
安装 Samba
sudo apt update
sudo apt install samba -y
配置共享目录
编辑 /etc/samba/smb.conf,末尾添加:
[share]
path = /home/user/共享目录
browseable = yes
read only = no
guest ok = no
valid users = user
create mask = 0755
directory mask = 0755
| 参数 | 作用 |
|---|---|
path | 要共享的本地目录 |
browseable | 是否在网络邻居中可见 |
read only | no 可读写,yes 只读 |
guest ok | yes 允许匿名免密码访问 |
valid users | 允许访问的 Linux 用户名 |
create mask | 新建文件权限掩码 |
directory mask | 新建目录权限掩码 |
设置 Samba 用户密码
Samba 密码独立于系统登录密码:
sudo smbpasswd -a 用户名
防火墙放行 + 启动服务
sudo ufw allow samba
sudo systemctl restart smbd
sudo systemctl enable smbd
客户端:Linux 挂载 Samba 共享
临时挂载
# 安装必要工具
sudo apt install cifs-utils
# 挂载
sudo mount -t cifs //192.168.x.x/共享名 /mnt/share
-o username=用户名,password=密码,uid=1000,gid=1000,iocharset=utf8
- 匿名共享用
-o guest - 无密码用
-o username=guest,password=
永久挂载(写入 /etc/fstab)
先创建凭据文件避免 fstab 里写明文密码:
# /root/.smbcredentials
username=你的用户名
password=你的密码
sudo chmod 600 /root/.smbcredentials
在 /etc/fstab 中添加:
//192.168.x.x/共享名 /mnt/share cifs credentials=/root/.smbcredentials,iocharset=utf8,uid=1000,gid=1000 0 0
sudo mount -a # 测试挂载是否生效
常用挂载选项
| 选项 | 作用 |
|---|---|
iocharset=utf8 | 解决中文文件名乱码 |
uid=1000,gid=1000 | 指定文件属主,避免挂载后归 root |
vers=2.0 或 vers=3.0 | 指定 SMB 协议版本。连不上时尝试 vers=2.0 或 3.0 |
noperm | 不检查权限,本地所有用户能读写 |
nounix,noserverino | Windows 服务器推荐加,避免 inode 警告 |
取消挂载
sudo umount /mnt/share
如果提示 target is busy,先退出挂载目录再 umount。
客户端:Windows 挂载 Samba 共享
- 文件资源管理器 → 右键"此电脑" → 映射网络驱动器
- 文件夹填:
\\192.168.x.x\share - 输入 Samba 用户名和密码
常见故障排查
- 连不上:检查
smbd是否启动(systemctl status smbd)、防火墙是否放行端口 139/445 - 权限拒绝:检查
valid users和smbpasswd是否已设置 - 文件夹能打开但写不进去:检查 Linux 目录权限和
read only设置 - 中文文件名乱码:挂载时加
iocharset=utf8 - 提示 vers= 相关错误:添加
vers=2.0或vers=3.0指定协议版本