桑巴 是一个开源软件套件,可为 SMB/CIFS 客户端提供文件和打印服务。 它是 SMB(服务器消息块)和 CIFS(通用互联网文件系统)协议的重新实现,允许基于 Linux 和 Unix 的系统与 Windows 客户端和服务器共享文件和打印机。
本教程将在 CentOs 上安装 Samba 并配置 Samba 服务器以跨各种操作系统共享文件。
如何在 Windows 上设置和挂载 Samba 共享
在 CentOS 上安装 Samba 的先决条件
在安装和配置 Samba 之前,检查它是否已经安装在您的系统上很重要。 您可以通过运行命令来执行此操作
smbd -V
当你运行命令 smbd -V
在终端中,将显示当前安装的 Samba 守护进程的版本号。 这对于确定系统上是否已安装 Samba 以及如果已安装,当前正在使用哪个版本很有用。
- 我们还必须确保系统用户具有根访问权限。
- 接下来,建议通过运行更新系统
yum update
. 这将确保所有必要的依赖项都是最新的。
在 CentOS 上安装 Samba
我们已经成功检查了安装 Samba 服务器的先决条件。 让我们继续执行以下命令来安装 Samba 服务器,
dnf install samba samba-common samba-client
如果你的系统没有预装 dnf 可以使用 yum,
安装 Samba 所需的依赖项,包括 samba
samba-common 和 samba-client
通过运行命令打包
yum install samba samba-common samba-client

启动 Samba 服务器服务
让我们启动 samba 服务并让它们在系统启动时自动启动,
sudo systemctl start smb.service sudo systemctl enable smb.service sudo systemctl start nmb.service sudo systemctl enable nmb.service
smbd(Samba 守护进程)服务 使用 SMB/CIFS 协议为客户提供文件和打印共享服务。 它作为服务器上的守护程序运行,并在 TCP 端口 139 和 445 上侦听传入连接。当客户端连接到服务器时,smbd 服务处理请求,例如提供对文件和目录的访问或打印文档。 smbd 服务还为连接到服务器的客户端处理身份验证、授权和访问控制。
nmbd(NetBIOS 名称服务器守护进程)服务 为客户端提供 NetBIOS over IP 命名服务。 它还作为服务器上的守护程序运行,并侦听 UDP 端口 137 上的传入连接。nmbd 服务允许客户端将 NetBIOS 名称解析为 IP 地址,这对于 SMB/CIFS 网络至关重要。 它还允许客户端通过在本地网络上广播 NetBIOS 名称查询来查找和浏览网络资源,例如共享文件和打印机。
smbd 和 nmbd 服务一起允许 Linux 或 Unix 系统充当 Windows 客户端的文件和打印服务器,并参与 Windows 网络浏览环境。 它们使 Windows 客户端能够像访问 Windows 服务器一样访问 Linux/Unix 服务器上的文件、目录和打印机。 smbd 服务提供实际的文件和打印共享功能。 相比之下,nmbd 服务为客户端提供了必要的命名和浏览服务,以定位和访问共享资源。

设置防火墙以允许 Samba 服务运行
要允许客户端访问 Samba 提供的文件和打印共享服务,您需要配置防火墙以打开必要的端口。
第一步是运行以下命令:
firewall-cmd --permanent --zone=public --add-service=samba
此命令告诉防火墙将“samba”服务永久添加到“公共”区域。 这意味着更改将在系统重新启动后持续存在。 “samba”服务是防火墙中的预定义服务,它为 Samba 打开必要的端口,包括用于 SMB/CIFS 文件和打印共享的 TCP 端口 139 和 445 以及用于 NetBIOS 名称解析的 UDP 端口 137。
第二个命令是:
firewall-cmd --zone=public --add-service=samba
此命令告诉防火墙以临时方式将“samba”服务添加到“公共”区域。 这意味着更改不会在系统重新启动后持续存在。
这两个命令确保防火墙配置为允许公共网络上的客户端访问 Samba 服务。 防火墙现在将允许 SMB/CIFS 文件和打印共享以及 NetBIOS 名称解析所需端口上的传入连接,允许客户端连接到 Samba 服务器并访问共享文件和打印机。
请务必注意,如果您使用的防火墙软件与 firewalld 不同,则命令和配置可能会有所不同。

创建 Samba 共享目录并添加用户
为了创建结构化和可维护的 Samba 设置,所有 Samba 目录和数据都将位于 /samba 目录中。 首先,使用以下命令创建 /samba 目录并设置必要的权限:
sudo mkdir /samba
– 此命令在系统上创建 /samba 目录。sudo groupadd sambashare
– 此命令创建一个名为 sambashare 的新组。sudo chgrp sambashare /samba
– 此命令将 /samba 目录的组所有权更改为新创建的 sambashare 组。

Samba 使用 Linux 用户和组权限系统,但它有一个独立于标准 Linux 身份验证的身份验证机制。 因此,要创建 Samba 用户,我们将首先使用标准的 Linux useradd 工具创建普通 Linux 用户,然后使用 smbpasswd 实用程序设置用户密码。
在这个 example,我们将创建两种类型的用户:
- 名为 reg-user 的普通用户将有权访问其私有文件共享。
- 名为 samba- 的管理用户admin 具有对 Samba 服务器上所有共享的读写访问权限。
1.创建普通用户
要创建名为“reg-user”的新用户,请使用以下命令:
sudo useradd -M -d /samba/reg-user -s /usr/sbin/nologin -G sambashare reg-user
这是对上述标志和命令的作用的解释,
- -M :不创建用户的主目录。 我们将手动创建此目录。
- -d /samba/reg-user:将用户的主目录设置为/samba/reg-user。
- -s /usr/sbin/nologin:禁用该用户的 shell 访问。
- -G sambashare:将用户添加到sambashare组。
以下 chown 命令将创建 reg-user 的主目录并将目录所有权设置为用户 reg-user 和组 sambashare:
sudo mkdir /samba/reg-user sudo chown reg-user:sambashare /samba/reg-user
下面的命令用于给/samba/reg-user目录添加setgid位,使该目录下新建的文件继承父目录的组。 这样,无论哪个用户创建新文件,该文件都会有 sambashare 的组所有者。
sudo chmod 2770 /samba/reg-user
要将 josh 用户帐户添加到 Samba 数据库并设置用户密码,请使用以下命令:
sudo smbpasswd -a reg-user
系统将提示您输入并确认用户密码。
设置密码后,使用以下命令启用 Samba 帐户:
sudo smbpasswd -e reg-user
2.创建管理用户
创建管理用户的过程,samba-admin, 很相似。 要创建管理用户,请键入:
sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare samba-admin
上面的命令还将创建一个组 sadmin 并将用户添加到 sadmin 和 sambashare 组。
要设置密码并启用 sadmin 用户,请使用以下命令:
sudo smbpasswd -e samba-admin
3.创建用户共享目录
sudo mkdir /samba/users
将目录所有权设置为用户 sadmin 和组 sambashare:
sudo chown sadmin:sambashare /samba/users
所有经过身份验证的用户都可以访问该目录。
以下命令用于配置对 /samba/users 目录中 sambashare 组成员的写/读访问权限:
sudo chmod 2770 /samba/users
配置 Samba 服务器
创建samba共享目录后,需要编辑 smb.conf
文件来配置共享、用户和权限。 smb.conf 是Samba 的配置文件。 这 smb.conf
文件通常位于 /etc/samba
目录。
但是在我们开始编辑配置文件之前,让我们先备份一下,
mv /etc/samba/smb.conf /etc/samba/smb.con.bak

您可以通过向 smb.conf
文件格式:
[users] path = /samba/users browseable = yes read only = no force create mode = 0660 force directory mode = 2770 valid users = @sambashare @samba-admin [josh] path = /samba/reg-user browseable = no read only = no force create mode = 0660 force directory mode = 2770 valid users = reg-user @samba-admin
现在,我们保存并退出配置文件。
现在配置文件已保存,让我们重新启动服务,
sudo systemctl restart smb.service sudo systemctl restart nmb.service
结论
那就是 现在我们已经设置了 Samba 服务器,我们需要做的就是连接到 Samba 服务器。 请阅读有关连接到 samba 服务器的内容。