云计算百科
云计算领域专业知识百科平台

第2章:进阶Linux系统——第1节:配置与管理Samba服务器

目录

一、配置与管理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 协议
  • SMB(Server Message Block)是局域网上共享文件和打印机的协议,由 Microsoft 和 Intel 于 1987 年制定,为 Microsoft 网络核心通信协议;Samba 将 SMB 协议移植到 UNIX/Linux 系统。
  • 基于NetBIOS over TCP/IP,Samba 可实现局域网及互联网的资源共享(互联网核心协议为 TCP/IP)。
  • SMB 工作在会话层、表示层及部分应用层,使用 NetBIOS 的 API,是开放性协议,支持扩展,包含约 65 个上层作业,每个作业超 120 个函数,结构庞大复杂。

  • 10.1.3 掌握 Samba 的工作原理
  • SMB 协议端口:早期基于 NBT 协议(NetBIOS over TCP/IP),使用 UDP 137、138 及 TCP 139 端口;后期可直接运行于 TCP/IP,无 NBT 层,使用 TCP 445 端口。
  • Samba 工作流程(4 步):协议协商(negprot 请求 / 响应)→建立连接(session setup &X 请求 / 响应)→访问共享资源(tree connect &X 请求 / 响应)→断开连接。
  • Samba 相关进程(核心 2 个)
    • nmbd:实现 NetBIOS 名解析,提供浏览服务,展示网络共享资源列表。
    • smbd:管理 Samba 服务器的共享目录、打印机,负责共享资源的数据传输管理,是客户端访问共享的核心进程。


  • 任务 2 配置 Samba 服务

    10.2.1 安装并启动 Samba 服务(RHEL7/CentOS7)
  • 检测已安装包: rpm -qa |grep samba
  • 安装前准备
    • 挂载 ISO 镜像: mkdir /iso
      mount /dev/cdrom /iso
    • 制作用户 yum 源(/etc/yum.repos.d/dvd.repo): [dvd]
      name=dvd
      baseurl=file:///iso
      gpgcheck=0
      enabled=1
  • 安装 Samba: yum clean all
    yum install samba -y
  • 验证安装: rpm -qa | grep samba 会显示 samba、samba-common、samba-libs 等相关包。
  • 服务管理命令
    • 启动: systemctl start smb
    • 开机自启: systemctl enable smb
    • 重启 / 重载 / 停止: systemctl restart/reload/stop smb
    • 注意:修改配置文件后必须重启 / 重载服务,配置才生效。

  • 10.2.2 Samba 服务器配置工作流程
  • 编辑主配置文件 smb.conf,指定共享目录并设置共享权限;
  • 在 smb.conf 中指定日志文件名称和存放路径;
  • 设置共享目录的本地系统权限;
  • 重新加载 / 启动 SMB 服务,使配置生效;
  • 关闭防火墙(或放行 Samba 服务),设置 SELinux 为允许状态。
  • 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 共享服务定义(常用字段)

  • 共享名:[共享名](配置段名,如 [public])
  • 描述:comment = 备注信息
  • 共享路径:path = 绝对地址路径
  • 匿名访问:public = yes/no(yes 允许,no 禁止)
  • 访问用户:valid users = 用户名/@组名(指定可访问的用户 / 用户组)
  • 只读设置:read only = yes/no(yes 只读,no 读写)
  • 主机过滤:hosts allow = 网段/主机名(允许访问的主机);hosts deny = 网段/主机名(禁止访问的主机)
  • 可写设置:writable = yes/no(全局可写);write list = 用户名/@组名(指定可写的用户 / 组)
  • 特殊段:[homes](用户主目录)、[printers](打印机共享)
  • 配置示例

    • 示例 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.环境信息
    主机名称操作系统IP 地址网络连接方式
    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
    mkdir /companydata/sales
    touch /companydata/sales/test_share.tar
  • 添加销售组、用户及 Samba 账号: groupadd sales # 创建销售组
    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账号
  • 修改 smb.conf 主配置文件: [global]
    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
  • 设置共享目录本地系统权限: chmod 777 /companydata/sales –R # 递归设置读写执行权限
    chown sale1:sales /companydata/sales -R # 递归设置属主属组
    chown sale2:sales /companydata/sales -R

    • -R:递归处理,对目录下所有文件 / 子目录生效。
  • SELinux 设置(二选一):
    • 临时修改上下文: chcon -t samba_share_t /companydata/sales -R
    • 临时关闭 SELinux: setenforce Permissive (查看状态:getenforce)
  • 防火墙放行 Samba 服务: firewall-cmd –permanent –add-service=samba # 永久放行
    firewall-cmd –reload # 重载防火墙
    firewall-cmd –list-all # 验证是否放行
  • 重启 Samba 服务: systemctl restart smb
  • 权限说明:客户端最终访问权限 = Samba 共享权限 + 本地文件系统权限,取最严格的一项。


  • 任务 4 配置 Samba 客户端

    1. Windows 客户端(Win7)访问方式
  • UNC 路径直接访问:开始→运行→输入\\\\192.168.10.1→输入 Samba 账号(sale1/sale2)和密码,即可访问共享。
    • 测试:用 test_user1 登录会因无权限被拒绝。
  • 映射网络驱动器:我的电脑→工具→映射网络驱动器→选择盘符(如 Z)→输入地址\\\\192.168.10.1\\sales→输入账号密码,映射后可直接通过盘符访问。
  • 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 客户端)

  • Samba 服务永久开机自启:教程中systemctl enable smb已实现,补充查看自启状态:systemctl is-enabled smb。
  • Linux 客户端共享目录持久化挂载:教程中mount为临时挂载,重启后失效,需配置/etc/fstab: # 编辑fstab,添加以下行
    //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 的常用维护与故障排查命令

  • 配置文件语法检查:testparm(核心命令,修改 smb.conf 后必执行,检测语法错误并显示配置摘要)。
  • 查看 Samba 服务状态:systemctl status smb nmbd(nmbd 需单独启动,systemctl start nmbd)。
  • 查看 Samba 在线用户:smbstatus(显示当前连接的用户、访问的共享、进程信息)。
  • 重启 Samba 相关进程:systemctl restart smb nmbd(nmbd 负责名称解析,需与 smb 一起重启)。
  • 日志排查:tail -f /var/log/samba/log.客户端IP(实时查看来访主机的访问日志,定位权限、连接错误)。

  • 7. Samba 打印机共享的补充配置

    教程中仅提及load printers = yes,补充完整打印机共享配置步骤(基于 CUPS):

  • 安装 CUPS 服务:yum install cups -y → systemctl start cups && systemctl enable cups。
  • 在 CUPS 网页端配置打印机:访问http://服务器IP:631,添加并测试打印机。
  • Smb.conf 中启用打印机共享:

    plaintext

    [printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes # 关键参数,允许打印

  • Windows 客户端添加网络打印机:开始→设备和打印机→添加打印机→选择\\\\Samba服务器IP\\打印机名,安装驱动即可使用。

  • 8. Samba 与 NFS 的对比(Linux 跨系统共享方案选择)

    Samba 主打Linux-Windows 跨系统共享,NFS 主打Linux-Linux/UNIX 共享,核心对比:

    特性SambaNFS
    协议 SMB/CIFS NFS(V3/V4)
    跨平台 支持 Linux/Windows/macOS 主要支持 Linux/UNIX,Windows 需安装客户端
    身份验证 支持 user/domain/LDAP,密码验证 基于 IP / 主机名授权,无密码验证(需配合 Kerberos)
    性能 中规中矩,适合小文件、多客户端 性能更高,适合大文件、高并发的 Linux 集群
    配置复杂度 中等(需管理权限、账号) 简单(仅需配置共享目录和授权 IP)
    适用场景 跨系统文件 / 打印机共享,企业混合网络 Linux 服务器集群、大数据存储、本地局域网 Linux 共享

    9. Samba 的性能优化技巧(生产环境)

  • 调整最大连接数:在 [global] 中添加max connections = 100(根据服务器性能设置,默认无限制)。
  • 开启缓存:添加cache directory = /var/cache/samba → cache size = 10240(缓存大小 10GB,提升文件访问速度)。
  • 优化端口:仅启用 SMB 3.0 + 协议,关闭旧端口(137/138/139),仅保留 445 端口:

    plaintext

    [global]
    smb ports = 445
    server min protocol = SMB3_00

  • 设置文件权限掩码:添加create mask = 0644 → directory mask = 0755(统一客户端创建文件 / 目录的权限)。
  • 禁用不必要的服务:关闭浏览服务(browseable = no)、打印机共享(load printers = no),减少资源占用。

  • 10. Samba 的高可用部署(企业进阶)

    对于核心业务的 Samba 共享,可采用Keepalived + Samba实现主备高可用,核心思路:

  • 两台 Samba 服务器配置相同的共享目录、账号、权限(可通过 NFS/GlusterFS 实现数据同步)。
  • 安装 Keepalived,配置虚拟 IP(VIP),主服务器提供服务,备服务器待机。
  • 当主服务器故障时,Keepalived 自动将 VIP 漂移到备服务器,实现无缝切换,保证服务不中断。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 第2章:进阶Linux系统——第1节:配置与管理Samba服务器
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!