10.1 配置Samba服务

系列 - 配置与管理Samba服务器
目录
实验概述
Samba是一个在Linux/Unix系统上实现SMB/CIFS协议的免费软件,通过它可以在不同操作系统之间共享文件和打印机。本实验将带你学习如何在Linux系统上配置Samba服务,实现与Windows系统的文件共享,让你掌握跨平台文件共享的配置技巧。

任务一:在Linux服务器上配置Samba
任务目标: 完成Samba的安装、共享目录创建、服务配置和用户管理,搭建一个可用的Samba文件共享服务器。
步骤 1:安装Samba软件包
首先,我们需要安装Samba服务。在基于Red Hat的系统(如CentOS)中,使用yum包管理器进行安装:
yum install -y samba
提示
-y 参数表示在安装过程中自动确认所有提示,无需手动输入y确认。步骤 2:创建共享目录并设置权限
接下来创建一个专门用于共享的目录,并设置合适的权限:
# 创建共享目录
mkdir -p /srv/smb
# 修改目录所有者和所属组
chown -R nobody:smbusers /srv/smb
# 设置目录权限
chmod -R 2770 /srv/smb
权限说明
权限2770中的"2"表示设置SGID位,这样在该目录下创建的文件会自动继承父目录的用户组属性,有利于团队协作。
步骤 3:配置Samba共享规则
Samba的主配置文件位于/etc/samba/smb.conf。我们需要编辑这个文件来定义共享目录的访问规则。
打开配置文件,在配置文件的末尾添加以下共享配置:
[docker]
comment = 共享给Docker使用
# 基本权限
browserable = yes # 在网上邻居可见
writable = yes # 允许写入(需要认证)
read only = no # 非只读
# 访问控制
valid users = @smbusers # 只允许smbusers组用户访问
write list = @smbusers # 写入权限给smbusers组
# 强制用户组
force group = smbusers
force create mode = 0660
force directory mode = 0770
配置参数详解
[docker]:共享名称,Windows用户访问时显示的名称browserable = yes:使该共享在网络浏览器中可见valid users = @smbusers:只有smb用户组的成员才能访问force group = smbusers:强制所有创建的文件都属于smbusers组force create mode = 0660:新建文件的默认权限(所有者可读写,组内成员可读写)
步骤 4:创建Samba用户
Samba服务使用独立的用户认证系统,需要为将要访问共享的用户创建Samba账户:
# 创建用户组
groupadd smbusers
# 创建系统用户并添加到smbusers组
useradd -G smbusers zhangsan
# 为用户创建Samba密码
smbpasswd -a zhangsan
# 启用该Samba用户
smbpasswd -e zhangsan
注意
Samba密码独立于系统用户密码,即使系统用户密码和Samba密码相同,它们也是分开存储和管理的。
步骤 5:启动Samba服务
配置完成后,启动Samba服务并检查其状态:
# 启动Samba服务
systemctl start smb
# 检查服务状态
systemctl status smb
任务二:在Windows中访问并测试共享
任务目标: 从Windows系统连接到Linux上的Samba共享,映射为网络驱动器,并验证文件同步功能。
步骤 1:打开映射网络驱动器
- 打开【此电脑】
- 点击顶部菜单的【计算机】→【映射网络驱动器】

步骤 2:配置网络驱动器
在映射网络驱动器对话框中:
- 选择一个驱动器号(如Z:)
- 文件夹路径输入:
\\服务器IP地址\docker

步骤 3:输入凭据
系统会提示输入凭据:
- 用户名:
zhangsan(或你创建的Samba用户) - 密码:该用户的Samba密码

访问提示
如果出现认证失败,请检查:
- Samba服务是否正常运行(使用
systemctl status smb查看) - 防火墙是否开放了Samba端口
- 用户名和密码是否正确
- Windows是否能ping通Linux服务器
步骤 4:访问共享目录并测试
成功连接后,你会在Windows中看到一个名为"docker"的网络驱动器。

现在让我们测试文件同步功能:
- 在Windows中,打开新映射的网络驱动器
- 创建一个新文件或文件夹(例如创建一个txt文件并写入一些内容)
- 保存文件

步骤 5:验证文件同步
回到Linux服务器,检查共享目录中的文件:
ls -la /srv/smb/
你应该能看到刚刚在Windows中创建的文件。

恭喜!
如果你能在服务器上看到Windows创建的文件,说明Samba共享配置成功!现在Windows和Linux系统之间可以无缝共享文件了。
任务三:使用Docker快速部署Samba
任务目标: 学习如何使用Docker容器快速部署Samba服务,体验容器化部署的便利性。
步骤 1:清理之前的配置
为了避免端口冲突,我们需要先停止之前安装的Samba服务:
# 停止系统Samba服务
systemctl stop smb
同时在Windows中断开之前的网络驱动器连接:
- 右键点击之前映射的网络驱动器
- 选择"断开连接"
步骤 2:使用Docker部署Samba
现在我们使用 dperson/samba 这个预配置好的镜像来部署Samba服务:
docker run -d \
--name samba \
-p 139:139 \
-p 445:445 \
--restart unless-stopped \
-v /srv/smb:/mount \
-e USER="zhangsan;你的密码" \
-e SHARE="docker;/mount;yes;no;no;zhangsan;zhangsan" \
dperson/samba
参数说明
Docker Samba镜像通过环境变量进行配置,主要参数如下:
| 环境变量 | 格式 | 说明 |
|---|---|---|
USER |
用户名;密码 |
创建Samba用户 |
SHARE |
共享名;路径;是否可浏览;是否只读;允许guest;读用户列表;写用户列表 |
定义共享目录的权限和访问规则 |
本次配置中SHARE参数解析:
docker:共享名称/mount:容器内的共享目录路径yes:允许在网络邻居中浏览no:非只读模式(可写)no:不允许guest用户访问zhangsan:允许读取的用户zhangsan:允许写入的用户
步骤 3:验证Docker Samba服务
查看容器运行状态:
docker ps
确认容器正在运行后,重复执行任务二的步骤,重新在Windows中连接到Samba共享。
Docker部署的优势
- 快速部署:一条命令即可启动完整的Samba服务
- 环境隔离:不影响系统本身的配置
- 易于迁移:容器可以在任何支持Docker的系统中运行
- 版本控制:可以轻松切换不同版本的Samba