凌峰创科服务平台

Windows Samba服务器配置如何操作?

目录

  1. Samba 简介
  2. 准备工作
  3. 安装 Samba
  4. 核心配置文件:smb.conf
  5. 基础共享配置示例
  6. 用户认证与权限管理
  7. 高级配置(可选)
  8. 防火墙与 SELinux
  9. 启动、测试与管理
  10. 常见问题与排查

Samba 简介

Samba 是一个开源的软件套件,它实现了 SMB/CIFS 协议,它能让你的 Linux 服务器(如 CentOS, Ubuntu, Rocky Linux 等)像 Windows 文件共享服务器一样工作,让 Windows、macOS 甚至其他 Linux 设备可以像访问网络上的 Windows 电脑一样访问其共享文件夹。

Windows Samba服务器配置如何操作?-图1
(图片来源网络,侵删)

准备工作

你需要一个已经安装好的 Linux 系统(这里以 CentOS 7/8/9Rocky Linux / AlmaLinux 为例,Ubuntu/Debian 的命令略有不同,但核心配置文件 smb.conf 是一样的)。

  1. 更新系统
    sudo yum update -y
  2. 设置主机名 (可选,但推荐)
    sudo hostnamectl set-hostname samba-server
  3. 确认网络连接,确保服务器和客户端可以互相 ping 通。

安装 Samba

使用包管理器安装 Samba。

# 对于 CentOS/Rocky/AlmaLinux
sudo yum install samba samba-client samba-common -y
# 对于 Ubuntu/Debian
sudo apt update
sudo apt install samba samba-common -y

安装完成后,Samba 服务并不会自动启动。

核心配置文件:smb.conf

Samba 的所有配置都位于 /etc/samba/smb.conf 文件中,在修改之前,强烈建议先备份原文件

Windows Samba服务器配置如何操作?-图2
(图片来源网络,侵删)
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

使用你喜欢的文本编辑器(如 vinano)打开该文件:

sudo vi /etc/samba/smb.conf

文件结构分为两部分:

  • [global] 部分:全局设置,影响所有共享。
  • [共享名] 部分:定义具体的共享文件夹及其设置。

[global] 部分关键参数解析

[global] 部分,至少需要关注以下几个参数:

[global]
    # 工作组的名称,必须与你的 Windows 客户端所在的工作组一致,否则无法在“网络”中看到。
    # 默认通常是 WORKGROUP,如果你的 Windows 是 `HOME`,就改成 HOME。
    workgroup = WORKGROUP
    # 服务器的描述,会在“网络”中显示。
    server string = Samba Server %v
    # 安全级别,这是最重要的设置之一。
    # - `security = share`: 最不安全,任何人都可以访问,无需密码。**不推荐**。
    # - `security = user`: **最常用**,需要有效的用户名和密码才能访问。
    # - `security = ads`: 加入 Windows 域,使用 AD 进行认证。
    security = user
    # 是否允许 guest 用户访问,配合 `map to guest = bad user` 使用。
    # map to guest = bad user
    # 日志文件路径和级别
    log file = /var/log/samba/log.%m
    max log size = 50
    # 允许的客户端最大协议版本,建议保持默认或设置较新的版本。
    # server min protocol = SMB2

基础共享配置示例

smb.conf 文件的末尾,添加一个或多个共享定义,这里我们创建两个共享:一个公共只读共享,一个私有读写共享。

Windows Samba服务器配置如何操作?-图3
(图片来源网络,侵删)
# ================================================================
# 共享定义开始
# ================================================================
[Public]
    # 共享的描述名称,在 Windows 中会显示为这个名称。
    comment = Public Share for Everyone
    # 要共享的本地 Linux 路径。
    path = /samba/public
    # 是否允许 guest 用户访问 (guest ok = yes 是 guest only = yes 的别名)
    guest ok = yes
    # guest 用户映射为哪个 Linux 系统用户。
    # path 目录的所有者是 nobody,guest user 也应该是 nobody。
    guest account = nobody
    # 权限设置。
    # - read only = yes: 只读。
    # - read only = no: 可写。
    read only = yes
    # 允许哪些用户或用户组可以写入,即使 read only = no,也需要这个。
    # 如果设置为 "no",则任何人都可以写入(guest ok = no,则需要认证)。
    write list =
[Private]
    comment = Private Share for Authenticated Users
    path = /samba/private
    # 不允许 guest 用户访问,必须提供有效用户名和密码。
    guest ok = no
    # 允许写入。
    read only = no
    # 允许写入的用户列表,可以是用户名或 @组名。
    write list = @smbusers, admin
    # 新建文件和目录的默认权限。
    # - create mask: 新文件的权限 (664 = rw-rw-r--)
    # - directory mask: 新目录的权限 (775 = rwxrwxr-x)
    create mask = 0664
    directory mask = 0775
    # 新建文件和目录的所有者。
    # force user: 强制所有者为指定用户。
    # force group: 强制所属组为指定组。
    # force user = nobody
    # force group = nogroup
# ================================================================
# 共享定义结束
# ================================================================

创建共享目录并设置权限

上面的配置引用了 /samba/public/samba/private 目录,我们需要创建它们并设置正确的权限。

# 创建共享目录
sudo mkdir -p /samba/public
sudo mkdir -p /samba/private
# 设置所有者,确保 Samba 有权限访问
sudo chown -R root:nobody /samba/public
sudo chown -R root:nobody /samba/private
# 设置目录权限
sudo chmod -R 775 /samba/public
sudo chmod -R 775 /samba/private

用户认证与权限管理

由于我们设置了 security = user,所以必须创建可以访问 Samba 的用户。注意:这些用户必须是 Linux 系统中已经存在的用户

  1. 创建 Linux 系统用户

    # 创建一个名为 'testuser' 的用户
    sudo useradd testuser
    # 为该用户设置密码
    sudo passwd testuser
  2. 为 Samba 创建/设置密码 使用 smbpasswd 命令为 Samba 单独设置一个密码,这个密码可以和 Linux 用户密码不同。

    # 第一次使用,需要 -a (add) 选项
    sudo smbpasswd -a testuser
    # 修改已有用户的 Samba 密码
    sudo smbpasswd testuser
    # 禁用用户的 Samba 访问
    sudo smbpasswd -x testuser
  3. 创建 Samba 专用组 (可选) 如果我们想让一组用户共享一个文件夹,创建组是最佳实践。

    # 创建一个名为 'smbusers' 的组
    sudo groupadd smbusers
    # 将用户添加到组中
    sudo usermod -aG smbusers testuser
    sudo usermod -aG smbusers admin

    然后在 smb.conf[Private] 共享中使用 write list = @smbusers

高级配置(可选)

1. 使用 smb.conf 中的 include 选项管理共享

当共享很多时,smb.conf 会变得臃肿,你可以将每个共享的配置放在单独的文件中,然后在主配置文件中 include 进来。

  1. /etc/samba/ 目录下创建 shares 目录。

    sudo mkdir /etc/samba/shares
  2. [Public][Private] 的配置块分别存入 /etc/samba/shares/public.conf/etc/samba/shares/private.conf

  3. 在主 /etc/samba/smb.conf 文件末尾添加:

    # Include all share definitions from the shares directory
    include = /etc/samba/shares/*.conf

2. 设置用户主目录共享

Samba 可以自动为每个认证的用户共享其主

分享:
扫描分享到社交APP
上一篇
下一篇