BY xzllll

AIO By Linux (openSUSE) | SMB 服务器 (Server) 配置和使用指南

实践 | Practices 2024年10月28日

1.First | 序

前两篇的 All In One By Linux 系列介绍了

  • PPPOE & Basic route setup
  • DHCP 服务器 (Server) 配置和使用(PXE+Pool+IP&MAC)
All In One By Linux(openSUSE) |PPPOE & 基础路由配置
All In One By Linux | PPPOE & Basic route setup
All In One By Linux (openSUSE) | DHCP 服务器 (Server) 配置和使用(PXE+Pool+IP&MAC)
All In One By Linux (openSUSE) | DHCP (PXE+Pool+IP&MAC) Server Configuration and Usage

本篇记录

  • Linux SMB 服务器的配置和应用

1.1.What is SMB ? | 什么是 SMB ?

SMB(Server Message Block)是一种网络协议,主要用于在计算机网络中共享文件、打印机和其他资源。它允许应用程序在计算机之间读取和写入文件以及请求服务。以下是 SMB 的一些关键特点和功能:

1.1.1.协议类型

  • 层级:SMB 是一种应用层协议,通常在 TCP/IP 协议栈上运行。
  • 用途:用于局域网(LAN)中共享文件和打印机,允许不同操作系统(如 Windows、Linux 和 macOS)之间进行资源共享。

1.1.2.功能

  • 文件共享:SMB 允许用户访问和共享网络上的文件。例如,用户可以通过 SMB 协议从远程计算机打开、编辑和保存文件。
  • 打印共享:可以通过 SMB 协议访问和共享网络打印机。
  • 身份验证:SMB 支持用户身份验证,可以限制访问某些共享资源。
  • 状态信息:SMB 提供了对共享资源状态的查询功能,如文件锁定和属性获取。

1.1.3.版本

  • SMB 1.0:最初版本,广泛应用于 Windows 系统,存在安全问题。
  • SMB 2.0:Windows Vista 和 Windows Server 2008 引入,改进了性能和安全性。
  • SMB 3.0:Windows 8 和 Windows Server 2012 引入,增加了对加密和虚拟化的支持,进一步提升了安全性和性能。

1.1.4.应用

  • Windows 文件共享:SMB 是 Windows 系统中用于文件共享的主要协议,Windows 资源管理器允许用户轻松访问 SMB 共享。
  • Samba:在 Linux 和 Unix 系统上实现 SMB 协议的开源软件,使得这些系统能够与 Windows 系统共享文件和打印机。

1.1.5.安全性

  • 加密:较新版本的 SMB(如 SMB 3.0)支持加密,确保数据在传输过程中的安全性。
  • 身份验证机制:使用 NTLM(NT LAN Manager)和 Kerberos 等身份验证机制增强安全性。

1.1.6.工作原理

SMB 使用客户端-服务器模型,客户端发起请求,服务器处理请求并返回结果。它支持多种操作,如创建、删除文件,读取和写入数据,检查共享状态等。

总之,SMB 是一种重要的网络协议,广泛用于资源共享和网络服务,特别是在混合环境中,如 Windows 和 Linux 系统共存的网络中。

以上释义来自ChatGPT

1.2.Version | 版本

1.2.1.OS

1.2.2.samba

2.Prerequisites | 先决条件

在以下示例中

以 Linux 用户 clonzilla 权限

共享其位于 /home/data/clonezilla 目录下的文件

步骤如下

1. 创建 **clonzilla** 用户

    ```bash
    useradd -g users -s /sbin/nologin clonzilla

    # 以上命令同时将 clonzilla 用户添加至名为users用户组
    ```

2. 创建共享目录


    ```bash
    mkdir /home/data/clonezilla

    chown -R clonzilla:users /home/data/clonezilla
    ```

3. 配置 Samba 用户

    为 Samba 添加用户,以便用户可以访问共享文件夹

    ```bash
    sudo smbpasswd -a clonzilla
    ```
    > Samba 会要求为该用户设置一个 SMB 密码

2.Procedure | 步骤

2.1.Install Samba | 安装Samba

在 openSUSE 上,使用以下命令安装 Samba 服务:

sudo zypper install samba

其他发行版的安装命令:

  • Debian/Ubuntu: sudo apt install samba
  • RHEL/CentOS/Fedora: sudo dnf install samba

2.2.Setting smb.conf | 设置 smb.conf

Samba 的配置文件位于 /etc/samba/smb.conf

编辑此文件以设置共享文件夹和其他相关选项:

sudo vi /etc/samba/smb.conf

此配置文件有两部分组成分别是

  1. 全局配置
  2. 共享配置

2.2.1.全局配置

🔽 全局配置示例 🔽

workgroup = WORKGROUP
server string  = A SMB/CIFS File, Print, and Authentication Server
netbios name = HomeLab
interfaces= 10.7.7.7
keepalive= 600
log file=/var/log/samba/log.%m
log level=3 passdb:5 auth:10 winbind:2
bind interfaces only = yes

workgroup = WORKGROUP

  • 解释: 这是 Samba 服务器所加入的工作组的名称。Windows 系统通常使用工作组来组织网络中的计算机。WORKGROUP 是 Windows 默认的工作组名称,因此在多台计算机(包括 Windows 计算机)之间共享时,使用相同的工作组名称可以简化访问。

server string = A SMB/CIFS File

  • 解释: 这是 Samba 服务器的描述字符串,通常在网络浏览中显示,帮助用户识别服务器。可以是任何文本,通常用于提供有关服务器功能的信息。

netbios name = HomeLab

  • 解释: 这是 Samba 服务器在网络上的 NetBIOS 名称。NetBIOS 是用于局域网中计算机标识的协议。此名称用于其他计算机访问 Samba 服务器,确保其他设备能通过这个名字找到该服务器。

interfaces = 10.7.7.7

  • 解释: 这个参数指定了 Samba 监听的网络接口的 IP 地址。在这个例子中,Samba 只会在 IP 地址为 10.7.7.7 的接口上运行,其他接口的请求将被忽略。

keepalive = 600

  • 解释: 这个参数设置了 TCP keepalive 的时间间隔(以秒为单位),用于检测死连接。值 600 表示每 10 分钟检查一次连接状态。

log file = /var/log/samba/log.%m

  • 解释: 这个参数定义了 Samba 日志文件的存储位置和命名格式。%m 会被客户端的名称替换,因此每个连接的客户端将有自己的日志文件。这样可以帮助排查与特定客户端相关的问题。

log level = 3 passdb:5 auth:10 winbind:2

  • 解释: 这个参数设置了日志的详细程度。数字越高,记录的信息越详细。具体来说:
    • log level = 3:总体日志级别为 3,记录常规信息。
    • passdb:5:与用户密码数据库相关的日志级别为 5,提供更详细的密码相关信息。
    • auth:10:身份验证日志级别为 10,记录更详细的身份验证过程。
    • winbind:2:与 Winbind 相关的日志级别为 2,记录较少的详细信息。

bind interfaces only = yes

  • 解释: 当设置为 yes 时,Samba 只会在指定的接口(在这里是 10.7.7.7)上监听,而不会在所有可用的网络接口上进行监听。这可以增加安全性,确保 Samba 服务仅在预定的网络接口上运行。

2.2.2.共享配置

🔽 共享配置示例 🔽

[Clonezilla]
comment = Clonezilla
path = /home/data/clonezilla
valid users = clonezilla
writeable = yes
browseable = yes
guest ok = no

[Clonezilla]

  • 这行定义了共享的名称。在 Samba 中,这是用户在访问共享时看到的名称,表示一个共享资源。

comment = Clonezilla

  • 这是对该共享的描述或注释。当用户查看共享列表时,可以看到这个描述,帮助他们理解这个共享的用途。

path = /home/data/clonezilla

  • 这个配置项指定了服务器上实际的文件路径,即存储共享内容的文件夹。在这个例子中,文件夹位于 /home/data/clonezilla。

valid users = clonezilla

  • 此项指定了有权访问此共享的用户。只有在系统中已存在的用户 clonezilla 才能访问该共享。如果该用户未被授权,则无法访问。

writeable = yes

  • 这表示该共享是可写的,用户可以在此共享中创建、编辑和删除文件。

browseable = yes

  • 设置为 yes 表示该共享在网络中是可见的,用户可以在 Samba 客户端(如 Windows 文件浏览器)中查看和浏览此共享。

guest ok = no

  • 这表示不允许匿名用户(即未登录用户)访问此共享。只有被授权的用户(在本例中是 clonezilla)才能访问。

3.Use | 使用

至此 Samba 服务器已经配置完成

我们可以通过客户端来挂载 Samba 服务器共享目录

3.1.Windows

打开 Windows 文件管理 点击映射驱动器

根据自身配置选择(填写)以下内容

  • 驱动器名称
  • 文件夹
  • 登陆时重新连接
  • 使用其他凭据链接

输入以下凭据

  • Samba 用户名
  • 密码

凭据正确后即可完成挂载

3.2.Swift Backup

Swift Backup 可以使用 SMB 作为存储后端

配置如下图所示

标签

xzllll

三分钟热度三分钟收获