Samba 文件共享服务配置
原创2025年1月10日大约 2 分钟
📖 什么是 Samba?
Samba 是一个开源项目,允许在 Linux 和 Windows 系统之间共享文件和打印机。它实现了 SMB/CIFS 协议,使得不同操作系统之间能够无缝地进行文件共享。Samba 被广泛应用于家庭和企业网络中,可以轻松地将 Linux 服务器或 NAS (网络附属存储) 变成文件共享服务器。
🚀 Samba 的优势
- 跨平台支持:Samba 使得 Windows 和 Linux 系统之间的文件共享变得简单,用户可以在不同的操作系统上访问共享文件。
- 权限管理:通过 Samba,用户可以灵活地设置文件和目录的访问权限,确保数据安全。
- 易于配置:Samba 提供了简单的配置文件,用户可以根据需求快速进行设置。
🛠️ 使用 Docker 部署 Samba
通过 Docker 部署 Samba 是一种便捷的方式,可以快速搭建文件共享服务。以下是一个基本的 Docker Compose 配置示例,用于启动 Samba 服务。
Docker Compose 配置
services:
samba:
image: dperson/samba
container_name: samba
ports:
- "139:139"
- "445:445"
volumes:
- /mnt/data_hdd:/share_dir
command: >
-u "root;"
-s "SmbShare;/share_dir/;yes;no;yes;all;root;;"
restart: unless-stopped
配置说明
- image: 使用
dperson/samba
镜像,这个镜像是一个轻量级的 Samba 服务器。 - container_name: 设置容器的名称为
samba
,便于管理。 - ports: 映射 Samba 服务的端口,以便外部访问:
139
: NetBIOS 会话服务445
: SMB/CIFS 服务
- volumes: 将宿主机的
/mnt/data_hdd
目录挂载到容器内的/share_dir
目录,允许共享文件。此处直接同步挂载到容器的/share_dir
内,保证容器也能访问后面添加的硬盘。 - command: 指定 Samba 的启动命令:
-u "root;"
表示使用 root 用户,且不设置密码。-s "SmbShare;/share_dir/;yes;no;yes;all;root;;"
表示共享/share_dir
目录,并设置为可读写,允许所有用户访问。
- restart: 设置容器为
unless-stopped
,确保容器在意外退出时自动重启。
⚠️ 注意事项
- 安全性:在生产环境中,不建议使用 root 用户和空密码。应创建专用用户并设置强密码。此处我使用samba服务仅为了内网机器互相连接,为了我可以在个人PC上方便管理NAS的文件,所以没有设置密码。
- 防火墙设置:确保宿主机的防火墙允许 Samba 服务的端口访问。
🔍 访问 Samba 共享
启动 Docker 容器:
在Portainer的Stack Web Editor中添加上述配置文件,点击Deploy the stack部署samba docker服务。访问 Samba 共享:
- Windows 系统中,可以在文件资源管理器中输入
\\<宿主机IP>\mnt
访问共享文件夹。 - Linux 系统中,可以使用命令行挂载 Samba 共享:
sudo mount -t cifs //<宿主机IP>/mnt /mnt -o username=root,password=
- Windows 系统中,可以在文件资源管理器中输入