在 Ubuntu 桌面版上搭建文件服务器,其实是个非常经典且实用的场景。很多人觉得只有 Linux 服务器(Server 版)才配做这个,其实 Desktop 版完全没问题,甚至因为图形界面的存在,日常维护反而更直观。
核心思路很简单:安装 Samba 服务 -> 配置共享目录 -> 设置权限与用户。Samba 是基于 SMB/CIFS 协议实现的,这意味着 Windows、macOS、Android 和 iOS 设备都能无缝访问,兼容性最好。
以下是具体操作路径,我会尽量避开那些枯燥的“复制粘贴”式教程,把逻辑讲清楚。
1. 环境准备与基础安装
首先,确保你的系统更新到最新状态,这能避免很多依赖库冲突的问题。打开终端,执行:
sudo apt update && sudo apt upgrade -y
接下来安装 Samba 及其相关工具:
sudo apt install samba smbclient cifs-utils -y
samba:核心服务包。smbclient:用于测试连接的工具,排查问题必备。cifs-utils:如果你需要在 Linux 下挂载其他 Windows 共享,需要这个。
安装完成后,Samba 服务通常会自动启动。你可以用 systemctl status smbd 查看状态,或者直接用 sudo systemctl restart smbd 重启一下以确保生效。
2. 规划共享目录
假设你要共享一个名为 data 的文件夹,位置在 /home/yourusername/data。
关键点: 不要直接共享 /home 根目录下的所有东西,也不要随意修改系统默认权限。建议创建一个专门的目录。
mkdir ~/data
chmod 755 ~/data # 默认权限,所有者可读写,其他人只读
如果你希望某个特定用户拥有完全控制权,后续会在 Samba 配置里体现,但文件系统层面的权限(Linux Permission)必须先行正确设置。
3. 配置 Samba 主配置文件
这是最关键的一步。备份原配置是良好的职业习惯:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
然后编辑配置文件:
sudo nano /etc/samba/smb.conf
找到 [global] 部分,确认或添加以下设置,以优化网络发现和基本安全:
[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
enforce small wins = no
# 安全相关:禁止匿名访问
map to guest = never
# 允许的网络范围(可选,建议限制在内网 IP 段)
hosts allow = 192.168.1.
接着,在文件末尾添加你的共享段落。例如,共享 data 目录:
[data]
comment = Shared Data Directory
path = /home/yourusername/data
browseable = yes
read only = no
guest ok = no
valid users = yourusername
create mask = 0775
directory mask = 0775
force user = yourusername
force group = yourusername
参数解析:
path:指向你实际创建的目录。read only = no:允许写入。guest ok = no:关闭匿名访问,强制要求认证,这对于家庭或小型办公环境更安全。valid users:指定哪些 Linux 用户可以使用此共享。force user/group:确保所有写入操作都以该用户身份进行,避免权限混乱导致的“无法删除文件”等诡异问题。
保存并退出编辑器。
4. 创建 Samba 专用密码
这里有一个常见的误区:Samba 用户的密码独立于系统登录密码。即使你用了相同的用户名,也必须单独为 Samba 设置密码。
sudo smbpasswd -a yourusername
输入两次新密码。如果提示 "Added user xxx",说明成功。
注意: 如果该用户之前没有设置过系统密码,你可能需要先运行
sudo passwd yourusername设置系统密码,然后再执行上面的命令。
5. 防火墙与网络配置
Ubuntu 默认启用 UFW 防火墙。你需要放行 Samba 所需的端口(主要是 139 和 445)。
sudo ufw allow samba
# 或者更精确地:
sudo ufw allow from 192.168.1.0/24 to any port 139,445 proto tcp
执行 sudo ufw status 确认规则已添加。
6. 验证与访问
重启 Samba 服务使配置生效:
sudo systemctl restart smbd nmbd
从 Windows 客户端访问:
- 按下
Win + R,输入\Ubuntu_IP_Address(例如\192.168.1.100data)。 - 弹出登录框时,输入刚才设置的 Samba 用户名和密码。
- 如果能看到
data文件夹并能新建文件,即配置成功。
从 Linux/Mac 客户端访问:
- Linux: 使用文件管理器,选择“连接到服务器”,地址填
smb://192.168.1.100/data。 - Mac: Finder -> 前往 -> 连接服务器,地址填
smb://192.168.1.100/data。
进阶建议与避坑指南
-
IPv6 问题: 在某些网络环境下,Windows 可能会优先尝试通过 IPv6 连接,导致超时或失败。如果发现连不上,可以尝试在 Windows 资源管理器地址栏中明确使用 IPv4 地址,或者在 Ubuntu 上暂时禁用 IPv6(不推荐长期禁用,但在排查问题时有用)。
-
SELinux/AppArmor: Ubuntu 默认使用 AppArmor。Samba 的配置通常已经适配了 AppArmor 策略。除非你遇到奇怪的权限拒绝错误,否则不需要手动调整 AppArmor 配置文件。
-
性能考量: 桌面版 Ubuntu 并非为高并发设计。如果只是几个人同时存取文档,Samba 完全胜任。但如果涉及大量小文件读写或大带宽需求,考虑将数据存储在 SSD 上,并确保路由器/交换机支持千兆及以上速率。
-
自动挂载(可选): 如果你希望在每次开机时自动挂载远程共享,可以在
/etc/fstab中添加条目,但这属于更高级的操作,需谨慎处理密码存储安全问题(建议使用 credentials 文件而非明文密码)。 -
监控与维护: 定期查看
/var/log/samba/下的日志文件,特别是log.smbd,当出现连接问题时,这里是第一手信息源。
通过以上步骤,你就拥有一个稳定、兼容性好且易于管理的文件服务器了。对于个人用户或小团队来说,这种方式比部署 NAS 硬件更灵活,成本也更低。
云技术博客