凌峰创科服务平台

CentOS Samba服务器配置步骤有哪些?

目录

  1. 环境准备
  2. 安装 Samba
  3. 创建 Samba 用户和共享目录
  4. 配置 Samba 主配置文件
  5. 设置 SELinux 和防火墙
  6. 启动并设置开机自启
  7. 从客户端连接测试
  8. 高级配置与安全
  9. 常见问题与故障排除

环境准备

  • 一台已经安装好的 CentOS 7/8/9 服务器。
  • 一个具有 sudoroot 权限的用户账户。
  • 确保服务器和客户端(Windows 或其他 Linux 机器)在同一个局域网内,并且可以相互 ping 通。

安装 Samba

更新系统的软件包列表,然后安装 Samba。

CentOS Samba服务器配置步骤有哪些?-图1
(图片来源网络,侵删)
# 更新软件包缓存
sudo dnf update -y
# 安装 Samba 软件包
sudo dnf install samba samba-common -y

创建 Samba 用户和共享目录

Samba 使用自己的用户密码数据库,而不是直接使用系统用户,我们将创建一个系统用户,然后为这个用户设置 Samba 密码。

1 创建系统用户(可选但推荐)

虽然可以直接为系统用户设置 Samba 密码,但为了安全和管理方便,我们通常创建一个专门用于访问 Samba 共享的用户。

# 创建一个名为 sambauser 的系统用户(不会创建主目录,不可登录)
sudo useradd -s /sbin/nologin sambauser
# (可选) 为这个系统用户设置一个登录密码,方便管理
sudo passwd sambauser

2 创建共享目录

我们将创建一个目录 /srv/samba/share 作为共享文件夹。

# 创建共享目录
sudo mkdir -p /srv/samba/share
# 设置目录所有者为我们刚刚创建的 sambauser
sudo chown -R sambauser:sambauser /srv/samba/share
# 设置适当的权限,让用户可以在里面读写
sudo chmod -R 770 /srv/samba/share

3 为用户设置 Samba 密码

这是最关键的一步,使用 smbpasswd 命令为 sambauser 用户设置 Samba 专用的密码。

CentOS Samba服务器配置步骤有哪些?-图2
(图片来源网络,侵删)
# -a 参数表示添加用户
sudo smbpasswd -a sambauser

系统会提示你输入并确认一个密码,这个密码将用于从客户端访问 Samba 共享。

配置 Samba 主配置文件

Samba 的主要配置文件是 /etc/samba/smb.conf,我们将对其进行编辑。

# 使用你喜欢的文本编辑器打开文件,vim
sudo vim /etc/samba/smb.conf

打开文件后,可以清空或注释掉所有内容,然后添加以下基本配置,这是一个清晰、易于管理的结构。

#======================= Global Settings =======================
[global]
   # 工作组,需要与你的 Windows 工作组一致,通常是 WORKGROUP
   workgroup = WORKGROUP
   # 设置服务器描述信息,在网络上显示为
   server string = Samba Server %v
   # 设置日志文件路径和级别
   log file = /var/log/samba/log.%m
   max log size = 50
   # 安全级别,我们使用 user,表示需要用户名和密码验证
   security = user
   # 如果你想让所有用户都能看到这个共享,但需要密码才能访问,可以取消下面这行的注释
   # map to guest = Bad User
#======================= Share Definitions =======================
[share]
   # 共享的名称,客户端将看到这个名字
   comment = Public Share
   # 共享的路径
   path = /srv/samba/share
   # 是否允许 guests 访问,我们设置为 no,因为需要用户认证
   guest ok = no
   # 是否允许写入
   writable = yes
   # 新创建的文件和目录的权限掩码
   # 设置为 0770 表示所有者和组有读写执行权限,其他用户无权限
   # 这与目录的权限设置相匹配
   create mask = 0770
   directory mask = 0770
   # 共享目录的有效用户列表,只有列表中的用户可以访问
   # 我们这里设置为我们的 sambauser
   valid users = sambauser

配置解释:

CentOS Samba服务器配置步骤有哪些?-图3
(图片来源网络,侵删)
  • [global]: 全局设置,影响整个 Samba 服务器。
  • [share]: 这是一个共享段的定义,你可以定义多个共享段([public], [dev] 等)。
  • security = user: 这是最重要的安全设置,它要求每个连接的客户端都必须提供一个有效的用户名和密码,并且该用户必须是服务器上已存在的 Samba 用户。
  • path: 指向你要共享的本地目录。
  • writable = yes: 允许用户向共享目录写入文件。
  • valid users = sambauser: 限制只有 sambauser 这个用户可以访问此共享,如果你想允许多个用户,可以用逗号分隔,valid users = user1, user2, @sambagroup

保存并退出编辑器。

设置 SELinux 和防火墙

在 CentOS 上,SELinux 和防火墙是必须正确配置的,否则 Samba 服务将无法正常访问。

1 配置 SELinux

SELinux 默认会阻止 Samba 访问文件系统,我们可以使用 setsebool 命令来调整策略。

# 允许 Samba 对用户主目录和公共目录的读写访问
sudo setsebool -P samba_enable_home_dirs on
# 允许 Samba 共享和写入非标准目录(如 /srv/samba)
sudo setsebool -P samba_export_all_rw on

提示: 使用 -P 参数可以使设置永久生效,重启后依然有效。

2 配置防火墙

使用 firewall-cmd 命令开放 Samba 所需的端口(139/TCP, 445/TCP 以及用于 NetBIOS 名称服务的 137/UDP138/UDP)。

# 永久添加 samba 服务到防火墙规则中
sudo firewall-cmd --permanent --add-service=samba
# 重新加载防火墙规则以使更改生效
sudo firewall-cmd --reload

启动并设置开机自启

启动 smb 服务(Samba的核心文件共享服务)和 nmb 服务(负责 NetBIOS 名称解析),并设置它们在系统启动时自动运行。

# 启动 smb 和 nmb 服务
sudo systemctl start smb
sudo systemctl start nmb
# 设置开机自启
sudo systemctl enable smb
sudo systemctl enable nmb
# 检查服务状态,确保是 active (running)
sudo systemctl status smb
sudo systemctl status nmb

从客户端连接测试

你的 Samba 服务器已经配置完成!可以从客户端进行测试。

在 Windows 上测试

  1. 打开“文件资源管理器”。
  2. 在地址栏输入 \\<你的服务器IP地址>,然后按回车。
    • \\192.168.1.100
  3. 系统会弹出身份验证窗口。
  4. 用户名: 输入 sambauser
  5. 密码: 输入你在第 3.3 步中设置的 Samba 密码。
  6. 你应该能看到名为 share 的共享文件夹,并且可以像访问本地磁盘一样读写文件。

在 Linux 上测试

  1. 确保你的 Linux 客户端安装了 samba-client 包。
    sudo dnf install samba-client -y
  2. 使用 smbclient 命令进行命令行测试。
    # -L 参数列出服务器上的所有共享
    # -U 指定用户名
    smbclient -L //localhost/ -U sambauser

    系统会提示你输入密码,成功后,你会看到 share 共享。

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