目录
一、配置与管理Samba服务器
任务 1 认识 Samba
10.1.1 Samba 应用环境
10.1.2 了解 SMB 协议
10.1.3 掌握 Samba 的工作原理
任务 2 配置 Samba 服务
10.2.1 安装并启动 Samba 服务(RHEL7/CentOS7)
10.2.2 Samba 服务器配置工作流程
10.2.3 主要配置文件 smb.conf
10.2.5 Samba 服务的日志文件和密码文件
任务 3 user 服务器实例解析(企业部门共享实战)
1.需求
2.环境信息
3.配置步骤
任务 4 配置 Samba 客户端
1. Windows 客户端(Win7)访问方式
2. Linux 客户端(RHEL7)访问方式
二、Samba 相关知识拓展
1. Samba 的版本与新特性
2. Samba 安全验证方式的深度解析
3. passdb backend 三种用户后台的适用场景
4. SELinux 对 Samba 的持久化配置
5. Samba 服务的开机自启与持久化挂载(Linux 客户端)
6. Samba 的常用维护与故障排查命令
7. Samba 打印机共享的补充配置
8. Samba 与 NFS 的对比(Linux 跨系统共享方案选择)
9. Samba 的性能优化技巧(生产环境)
10. Samba 的高可用部署(企业进阶)
一、配置与管理Samba服务器
本内容来自《Linux 网络操作系统项目教程(RHEL 7.4/CentOS 7.4)(第 3 版)》项目十,围绕 Samba 服务器配置与管理展开,核心为 RHEL7/CentOS7 环境下的 Samba 服务部署、配置及客户端访问。
Samba 是实现 Windows 和 Linux 跨系统资源共享的核心服务,支持文件、打印机共享,具备身份验证、权限管理等功能,应用场景广泛。
任务 1 认识 Samba
10.1.1 Samba 应用环境
核心应用方向:文件和打印机共享、身份验证和权限设置、名称解析、浏览服务。
10.1.2 了解 SMB 协议
10.1.3 掌握 Samba 的工作原理


- nmbd:实现 NetBIOS 名解析,提供浏览服务,展示网络共享资源列表。
- smbd:管理 Samba 服务器的共享目录、打印机,负责共享资源的数据传输管理,是客户端访问共享的核心进程。
任务 2 配置 Samba 服务
10.2.1 安装并启动 Samba 服务(RHEL7/CentOS7)
- 挂载 ISO 镜像: mkdir /iso
mount /dev/cdrom /iso - 制作用户 yum 源(/etc/yum.repos.d/dvd.repo): [dvd]
name=dvd
baseurl=file:///iso
gpgcheck=0
enabled=1
yum install samba -y
- 启动: systemctl start smb
- 开机自启: systemctl enable smb
- 重启 / 重载 / 停止: systemctl restart/reload/stop smb
- 注意:修改配置文件后必须重启 / 重载服务,配置才生效。
10.2.2 Samba 服务器配置工作流程
Samba 访问流程:客户端请求→服务器查询 smb.conf 验证共享目录和访问权限→记录访问日志→权限通过则允许访问。
10.2.3 主要配置文件 smb.conf
文件位置:
/etc/samba/smb.conf
,配套示例文件smb.conf.example(建议研读),RHEL7 的 smb.conf 简化后约 36 行,按功能分段划分。
配置文件备份:
cd /etc/samba
cp smb.conf smb.conf.bak
(防止配置错误无法恢复)。
核心参数及作用
Share Definitions 共享服务定义(常用字段)
配置示例
- 示例 1:发布 /share 为 public 共享,允许浏览、只读、匿名: [public]
comment = public
path = /share
browseable = yes
read only = yes
public = yes - 示例 2:/share/tech 仅允许 tech 组和经理 manger 访问: [tech]
comment=tech
path=/share/tech
valid users=@tech,manger - 示例 3:/public 仅允许 192.168.10.0 网段只读访问: [public]
comment=public
path=/public
public=yes
read only=yes
hosts allow = 192.168.10.
10.2.5 Samba 服务的日志文件和密码文件
日志文件
- 配置字段: log file = /var/log/samba/log.%m (在 smb.conf 中设置)
- 存放路径:默认/var/log/samba/,为每个来访主机单独建立日志文件
- 查看日志: ls -a /var/log/samba
密码文件
- 核心命令:smbpasswd -a 用户名(添加 Samba 账号,需先创建同名 Linux 系统账号)
- 示例:添加 reading 用户为 Samba 账号 useradd reading # 创建Linux系统账号
passwd reading # 设置系统账号密码
smbpasswd -a reading # 添加Samba账号并设置密码
任务 3 user 服务器实例解析(企业部门共享实战)
1.需求
公司销售部资料存于/companydata/sales/,仅允许销售部员工访问,启用身份验证,支持 Linux/Windows 客户端访问。
2.环境信息
| Samba 服务器(RHEL7-1) | RHEL 7 | 192.168.10.1 | VMnet1 |
| Linux 客户端(RHEL7-2) | RHEL 7 | 192.168.10.20 | VMnet1 |
| Windows 客户端(Win7-1) | Windows 7 | 192.168.10.30 | VMnet1 |
3.配置步骤
mkdir /companydata/sales
touch /companydata/sales/test_share.tar
useradd -g sales sale1 # sale1加入sales组
useradd -g sales sale2 # sale2加入sales组
useradd test_user1 # 测试用(非销售组)
passwd sale1;passwd sale2;passwd test_user1 # 设置系统密码
smbpasswd -a sale1;smbpasswd -a sale2 # 添加Samba账号
workgroup = Workgroup
server string = File Server
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[sales]
comment=sales
path=/companydata/sales
writable = yes
browseable = yes
valid users = @sales
chown sale1:sales /companydata/sales -R # 递归设置属主属组
chown sale2:sales /companydata/sales -R
- -R:递归处理,对目录下所有文件 / 子目录生效。
- 临时修改上下文: chcon -t samba_share_t /companydata/sales -R
- 临时关闭 SELinux: setenforce Permissive (查看状态:getenforce)
firewall-cmd –reload # 重载防火墙
firewall-cmd –list-all # 验证是否放行
任务 4 配置 Samba 客户端
1. Windows 客户端(Win7)访问方式
- 测试:用 test_user1 登录会因无权限被拒绝。
2. Linux 客户端(RHEL7)访问方式
前提:安装客户端工具samba-client和cifs-utils(步骤同服务端,挂载 ISO、配置 yum 源后安装):
yum install samba-client cifs-utils -y
smbclient 命令查看共享列表:
- 格式:smbclient -L 目标IP/主机名 -U 用户名%密码
- 匿名查看:smbclient -L 192.168.10.1(直接按回车)
- 认证查看:smbclient -L 192.168.10.1 -U sale2%12345678
smbclient 交互式访问共享:
- 格式:smbclient //目标IP/共享目录 -U 用户名%密码
- 示例: smbclient //192.168.10.1/sales -U sale2%12345678
smb: \\> ls # 查看文件
smb: \\> mkdir testdir # 创建目录
smb: \\> exit # 退出
mount 命令挂载共享目录(持久化访问):
- 格式:mount -t cifs //目标IP/共享目录 挂载点 -o username=用户名
- 示例: mkdir -p /mnt/sambadata # 创建挂载点
mount -t cifs //192.168.10.1/sales /mnt/sambadata/ -o username=sale1
cd /mnt/sambadata;ls # 访问挂载目录 - 注意:输入Samba 账号密码,非 Linux 系统账号密码。
二、Samba 相关知识拓展
1. Samba 的版本与新特性
- 本教程使用 Samba 4.6.2(RHEL7 默认),目前最新稳定版为 Samba 4.19+,新增特性:
- 更好的 SMB 3.1.1 协议支持,兼容 Windows 10/11、Windows Server 2019/2022;
- 支持 SMB 加密,提升数据传输安全性;
- 优化 LDAP 集成,支持更多域控场景;
- 增强多线程性能,提升大文件共享速度。
- Samba 4.x 相比 3.x 的核心变化:支持 Active Directory(AD)域控制器功能,可替代 Windows AD 实现域管理。
2. Samba 安全验证方式的深度解析
教程中提到 4 种安全级别,实际生产中user和domain为常用方式,补充说明:
| share | 小型局域网、公共只读共享 | 优点:免密码,访问便捷;缺点:无身份验证,安全性极低,易被攻击 |
| user | 中小企业、独立服务器、部门级共享 | 优点:本地验证,配置简单,安全性适中;缺点:无法集中管理账号 |
| server | 多 Samba 服务器集群 | 优点:集中验证,减少账号维护成本;缺点:依赖远程验证服务器,单点故障风险 |
| domain | 企业级、有 AD 域的环境 | 优点:与域控集成,统一账号管理,适合大规模网络;缺点:配置复杂,依赖域环境 |
3. passdb backend 三种用户后台的适用场景
| smbpasswd | smbpasswd -a/-d/-x 用户名(增 / 禁用 / 删) | 小型环境,用户量少(<50),配置简单 |
| tdbsam | pdbedit -a/-x 用户名(增 / 删),数据库文件/var/lib/samba/private/passdb.tdb | 中型环境,用户量 50-200,支持用户组、密码策略,本地数据库无需额外服务 |
| ldapsam | 结合 OpenLDAP 服务,需配置 LDAP 连接参数 | 大型环境,用户量>200,跨服务器 / 跨域的集中账号管理 |
4. SELinux 对 Samba 的持久化配置
教程中使用chcon为临时修改 SELinux 上下文,重启后失效,生产环境推荐持久化配置:
# 安装policycoreutils-python(提供semanage命令)
yum install policycoreutils-python -y
# 持久化设置samba共享上下文
semanage fcontext -a -t samba_share_t "/companydata/sales(/.*/)?"
# 生效配置
restorecon -Rv /companydata/sales
- 若需要 Samba 访问用户主目录,需开启 SELinux 布尔值:setsebool -P samba_enable_home_dirs on(-P永久生效)。
5. Samba 服务的开机自启与持久化挂载(Linux 客户端)
//192.168.10.1/sales /mnt/sambadata cifs defaults,username=sale1,password=123456 0 0
# 验证配置并生效
mount -a # 无报错则配置正确,重启后自动挂载
- 安全优化:避免密码明文写在 fstab,可创建密码文件/etc/samba/cifs.pass,权限设为 600: echo -e "username=sale1\\npassword=123456" > /etc/samba/cifs.pass
chmod 600 /etc/samba/cifs.pass
# fstab修改为
//192.168.10.1/sales /mnt/sambadata cifs defaults,credentials=/etc/samba/cifs.pass 0 0
6. Samba 的常用维护与故障排查命令
7. Samba 打印机共享的补充配置
教程中仅提及load printers = yes,补充完整打印机共享配置步骤(基于 CUPS):
plaintext
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes # 关键参数,允许打印
8. Samba 与 NFS 的对比(Linux 跨系统共享方案选择)
Samba 主打Linux-Windows 跨系统共享,NFS 主打Linux-Linux/UNIX 共享,核心对比:
| 协议 | SMB/CIFS | NFS(V3/V4) |
| 跨平台 | 支持 Linux/Windows/macOS | 主要支持 Linux/UNIX,Windows 需安装客户端 |
| 身份验证 | 支持 user/domain/LDAP,密码验证 | 基于 IP / 主机名授权,无密码验证(需配合 Kerberos) |
| 性能 | 中规中矩,适合小文件、多客户端 | 性能更高,适合大文件、高并发的 Linux 集群 |
| 配置复杂度 | 中等(需管理权限、账号) | 简单(仅需配置共享目录和授权 IP) |
| 适用场景 | 跨系统文件 / 打印机共享,企业混合网络 | Linux 服务器集群、大数据存储、本地局域网 Linux 共享 |
9. Samba 的性能优化技巧(生产环境)
plaintext
[global]
smb ports = 445
server min protocol = SMB3_00
10. Samba 的高可用部署(企业进阶)
对于核心业务的 Samba 共享,可采用Keepalived + Samba实现主备高可用,核心思路:
网硕互联帮助中心




评论前必须登录!
注册