CentOS7 部署 SMB 服务实战案例


一、SMB 服务简介

  • 作用
    • SMB(Server Message Block)是一种网络文件共享协议,主要用于 Windows 系统间的文件共享。
    • 在 Linux 中通过 Samba 实现 SMB 协议,支持与 Windows 客户端无缝集成。
    • 典型场景:跨平台文件共享、打印机共享、域控服务(如 Active Directory)。

二、环境准备

  • 节点规划
    • 服务器:centos7-server (IP: 192.168.1.10)
    • 客户端:Windows 10 或 Linux 客户端 (IP: 192.168.1.100)
  • 系统要求
    • CentOS 7 系统,关闭防火墙或开放 SMB 端口:
      firewall-cmd --permanent --add-service=samba
      firewall-cmd --reload
      
    • 关闭 SELinux 或配置策略(临时关闭):
      setenforce 0  # 临时关闭
      sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config  # 永久生效
      

三、安装与配置 Samba

  1. 安装 Samba 软件包

    yum install -y samba samba-client samba-common
    
  2. 创建共享目录并设置权限

    mkdir -p /samba/share
    chmod -R 777 /samba/share      # 简单权限设置(生产环境需细化)
    chown -R nobody:nobody /samba/share  # 指定用户/组
    
  3. 配置 Samba 服务端
    编辑配置文件 /etc/samba/smb.conf

    vi /etc/samba/smb.conf
    
    [global]
        workgroup = WORKGROUP       # 工作组名(与Windows一致)
        server string = Samba Server %v
        security = user             # 认证方式:user/share/domain
        map to guest = bad user     # 匿名访问(若允许访客)
        log file = /var/log/samba/log.%m
        max log size = 50
    
    [public]
        comment = Public Share      # 共享描述
        path = /samba/share         # 共享目录路径
        browseable = yes            # 是否可见
        writable = yes              # 是否可写
        guest ok = yes              # 允许匿名访问
        create mask = 0777          # 创建文件默认权限
        directory mask = 0777       # 创建目录默认权限
    
  4. 创建 Samba 用户(若需认证访问):

    # 先创建系统用户(如无需系统登录,添加 -M -s /sbin/nologin)
    useradd smbuser
    # 设置 Samba 密码(与系统密码独立)
    smbpasswd -a smbuser
    
  5. 启动服务

    systemctl start smb nmb
    systemctl enable smb nmb
    

四、客户端访问测试

  1. Windows 客户端

    • 打开资源管理器,输入 \\192.168.1.10\public
    • 匿名访问:直接进入共享目录。
    • 认证访问:输入用户名 smbuser 和 Samba 密码。
  2. Linux 客户端

    # 安装客户端工具
    yum install -y cifs-utils
    # 挂载共享目录
    mount -t cifs -o username=smbuser,password=123456 //192.168.1.10/public /mnt
    

五、Samba 配置文件详解

[global]
   workgroup = WORKGROUP         # 工作组名(与 Windows 一致)
   server string = Samba Server  # 服务器描述
   security = user               # 认证模式:
                                 # - user: 用户名/密码认证
                                 # - share: 共享级认证(无用户)
   passdb backend = tdbsam       # 用户数据库格式(tdbsam/smbpasswd)
   log file = /var/log/samba/log.%m  # 日志路径
   max log size = 50             # 日志大小(MB)

[共享名称]
   comment = 描述信息             # 共享说明
   path = /path/to/share         # 共享目录绝对路径
   browseable = yes/no           # 是否在客户端显示
   writable = yes/no             # 是否可写(等价于 read only = no)
   valid users = user1, @group1  # 允许访问的用户/组
   invalid users = user2         # 禁止访问的用户
   create mask = 0644            # 新建文件权限
   directory mask = 0755         # 新建目录权限
   guest ok = yes/no             # 是否允许匿名访问
   force user = nobody           # 强制文件属主
   force group = nogroup         # 强制文件属组

六、高级配置示例(用户隔离)

[private]
   comment = Private Share
   path = /samba/private
   valid users = smbuser
   writable = yes
   create mask = 0700
   directory mask = 0700

七、常见问题解决

  1. 权限拒绝

    • 检查目录权限:ls -ld /samba/share
    • 检查 SELinux 上下文:
      chcon -t samba_share_t /samba/share
      
    • 查看 Samba 日志:tail -f /var/log/samba/log.*
  2. 防火墙问题

    • 确保开放 SMB 端口:
      firewall-cmd --add-service=samba --permanent
      firewall-cmd --reload
      
  3. 用户认证失败

    • 确认用户已添加到 Samba:pdbedit -L
    • 重新设置密码:smbpasswd smbuser

八、应用场景

  • 跨平台文件共享:Windows 与 Linux 文件互通。
  • 备份存储:通过 SMB 挂载到本地进行定期备份。
  • 团队协作:多用户访问同一共享目录,支持权限隔离。

通过以上步骤,您已成功在 CentOS7 上部署了 Samba 服务,并可通过 SMB 协议实现跨平台文件共享!

posted on 2025-04-10 16:35  LeeHang  阅读(18)  评论(0)    收藏  举报