如何在CentOS 7上安装和配置Samba

Samba是SMB / CIFS网络文件共享协议的免费开放源代码重新实现,允许最终用户访问文件,打印机和其他共享资源。

在本教程中,我们将展示如何在CentOS 7上安装Samba并将其配置为独立服务器,以通过网络在不同操作系统之间提供文件共享。

我们将创建以下Samba共享和用户。

使用者:

  • 管理员 -具有对所有共享的读写访问权限的管理用户。
  • 乔希 -具有自己的私人文件共享的普通用户。

分享:

  • 使用者 -所有用户都可以通过读取/写入权限访问此共享。
  • 乔希 -只有用户josh和sadmin才能以读取/写入权限访问此共享。

您可以从网络上的所有设备访问文件共享。 在本教程的后面,我们还将提供有关如何从Linux,Windows和macOS客户端连接到Samba服务器的详细说明。

先决条件

在开始之前,请确保您以具有sudo特权的用户身份登录到CentOS 7系统。

在CentOS上安装Samba#

可从标准CentOS资料库中获得Samba。 要将其安装在CentOS系统上,请运行以下命令:

sudo yum install samba samba-client

安装完成后,启动Samba服务并启用它们以在系统启动时自动启动:

sudo systemctl start smb.servicesudo systemctl start nmb.service
sudo systemctl enable smb.servicesudo systemctl enable nmb.service

smbd 服务提供文件共享和打印服务,并侦听TCP端口139和445。 nmbd 服务向客户端提供基于IP的NetBIOS命名服务,并侦听UDP端口137。

配置防火墙号

现在已经在CentOS机器上安装并运行了Samba,您将需要配置防火墙并打开必要的端口。 为此,请运行以下命令:

firewall-cmd --permanent --zone=public --add-service=sambafirewall-cmd --zone=public --add-service=samba

创建Samba用户和目录结构

为了更易于维护和灵活性,而不是使用标准主目录(/home/user)所有Samba目录和数据都将位于 /samba 目录。

首先创建 /samba 目录:

sudo mkdir /samba

创建一个名为 sambashare。 稍后,我们将所有Samba用户添加到该组中。

sudo groupadd sambashare 

设置 /samba 目录组所有权 sambashare

sudo chgrp sambashare /samba

Samba使用Linux用户和组权限系统,但是它具有与标准Linux身份验证分开的身份验证机制。 我们将使用标准Linux创建用户 useradd 工具,然后使用 smbpasswd 效用。

如简介中所述,我们将创建一个普通用户,该用户将有权访问其私有文件共享和一个管理帐户,该帐户具有对Samba服务器上所有共享的读写权限。

创建Samba用户#

创建一个名为的新用户 josh,请使用以下命令:

sudo useradd -M -d /samba/josh -s /usr/sbin/nologin -G sambashare josh

useradd 选项具有以下含义:

  • -M -不要创建用户的主目录。 我们将手动创建此目录。
  • -d /samba/josh -将用户的主目录设置为 /samba/josh
  • -s /usr/sbin/nologin -禁用此用户的外壳程序访问。
  • -G sambashare -将用户添加到 sambashare 组。

创建用户的主目录并将目录所有权设置为user josh 和组 sambashare

sudo mkdir /samba/joshsudo chown josh:sambashare /samba/josh

以下命令会将setgid位添加到 /samba/josh 目录,因此在此目录中新创建的文件将继承父目录的组。 这样,无论哪个用户创建一个新文件,该文件都将具有组所有者 sambashare。 例如,如果您未将目录的权限设置为 2770sadmin 用户创建一个新文件 josh 将无法读取/写入此文件。

sudo chmod 2770 /samba/josh

添加 josh 通过设置用户密码将用户帐户添加到Samba数据库:

sudo smbpasswd -a josh

系统将提示您输入并确认用户密码。

New SMB password:
Retype new SMB password:
Added user josh.

设置密码后,通过键入以下内容来启用Samba帐户:

sudo smbpasswd -e josh
Enabled user josh.

要创建另一个用户,请重复与创建用户时相同的过程 josh

接下来,让我们创建一个用户和组 sadmin。 该组的所有成员将具有管理权限。 以后,如果您想授予其他用户管理权限,只需将该用户添加到 sadmin 组。

通过键入以下内容创建管理用户:

sudo useradd -M -d /samba/users -s /usr/sbin/nologin -G sambashare sadmin

上面的命令还将创建一个组 sadmin 并将用户添加到两个 sadminsambashare 组。

设置密码并启用用户:

sudo smbpasswd -a sadminsudo smbpasswd -e sadmin

接下来,创建 Users 共享目录:

sudo mkdir /samba/users

将目录所有权设置为用户 sadmin 和组 sambashare

sudo chown sadmin:sambashare /samba/users

所有经过身份验证的用户都可以访问此目录。 以下命令配置对成员的写/读访问 sambashare 分组 /samba/users 目录:

sudo chmod 2770 /samba/users

配置Samba共享#

打开Samba配置文件并添加以下部分:

sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf

[users]
    path = /samba/users
    browseable = yes
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = @sambashare @sadmin

[josh]
    path = /samba/josh
    browseable = no
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = josh @sadmin

这些选项具有以下含义:

  • [users][josh] -登录时将使用的共享名称。
  • path -共享的路径。
  • browseable -是否应在可用共享列表中列出该共享。 通过设置为 no 其他用户将无法看到该共享。
  • read only -是否在 valid users 列表能够写入此共享。
  • force create mode -设置此共享中新创建文件的权限。
  • force directory mode -设置此共享中新创建目录的权限。
  • valid users -允许访问共享的用户和组的列表。 组前缀为 @ 符号。

有关可用选项的更多信息,请参见Samba配置文件文档页面。

完成后,使用以下命令重新启动Samba服务:

sudo systemctl restart smb.servicesudo systemctl restart nmb.service

在以下各节中,我们将向您展示如何从Linux,macOS和Windows客户端连接到Samba共享。

从Linux连接到Samba共享#

Linux用户可以使用文件管理器从命令行访问samba共享或挂载Samba共享。

使用smbclient客户端#

smbclient 是一个允许您从命令行访问Samba的工具。 的 smbclient 大多数Linux发行版中尚未预安装该软件包,因此您需要使用分发软件包管理器进行安装。

安装 smbclient 在Ubuntu和Debian上运行:

sudo apt install smbclient

安装 smbclient 在CentOS和Fedora上运行:

sudo yum install samba-client

访问Samba共享的语法如下:

mbclient //samba_hostname_or_server_ip/share_name -U username

例如,连接到名为 josh 在具有IP地址的Samba服务器上 192.168.121.118 作为用户 josh 您将运行:

smbclient //192.168.121.118/josh -U josh

系统将提示您输入用户密码。

Enter WORKGROUPjosh's password:

输入密码后,您将登录Samba命令行界面。

Try "help" to get a list of possible commands.
smb: >

挂载Samba共享#

要在Linux上挂载Samba共享,您需要先安装 cifs-utils 包。

在Ubuntu和Debian上运行:

sudo apt install cifs-utils

在CentOS和Fedora上运行:

sudo yum install cifs-utils

接下来,创建一个安装点:

sudo mkdir /mnt/smbmount

使用以下命令挂载共享:

sudo mount -t cifs -o username=username //samba_hostname_or_server_ip/sharename /mnt/smbmount

例如挂载一个名为 josh 在具有IP地址的Samba服务器上 192.168.121.118 作为用户 josh/mnt/smbmount 您将运行的安装点:

sudo mount -t cifs -o username=josh //192.168.121.118/josh /mnt/smbmount

系统将提示您输入用户密码。

Password for [email protected]//192.168.121.118/josh:  ********

使用GUI#

文件,Gnome中的默认文件管理器具有内置选项,可以访问Samba共享。

  1. 打开文件,然后单击侧栏中的“其他位置”。
  2. 在“连接到服务器”中,以以下格式输入Samba共享的地址。 smb://samba_hostname_or_server_ip/sharename
  3. 单击“连接”,将出现以下屏幕:
  4. 选择“注册用户”,输入Samba用户名和密码,然后单击“连接”。
  5. 将显示Samba服务器上的文件。Gnome Samba文件

从macOS连接到Samba共享

在macOS中,您可以从命令行或使用默认的macOS文件管理器Finder访问Samba共享。 以下步骤显示了如何使用Finder访问共享。

  1. 打开“ Finder”,选择“ Go”,然后单击“ Connect To”。
  2. 在“连接到”中,以以下格式输入Samba共享的地址 smb://samba_hostname_or_server_ip/sharenamemacOS Samba连接
  3. 单击“连接”,将出现以下屏幕:macOS Samba登录
  4. 选择“注册用户”,输入Samba用户名和密码,然后单击“连接”。
  5. 将显示Samba服务器上的文件。macOS Samba文件

从Windows连接到Samba共享

Windows用户还可以选择从命令行和GUI连接到Samba共享。 以下步骤显示了如何使用Windows File Explorer访问共享。

  1. 打开文件资源管理器,然后在左窗格中右键单击“ This PC”。
  2. 选择“选择自定义网络位置”,然后单击“下一步”。
  3. 在“ Internet或网络地址”中,以以下格式输入Samba共享的地址 \samba_hostname_or_server_ipsharenameWindows Samba连接
  4. 单击“下一步”,将提示您输入登录凭据,如下所示:Windows Samba连接
  5. 在下一个窗口中,您可以为网络位置键入自定义名称。 默认的将由Samba服务器获取。Windows Samba名称
  6. 单击“下一步”移至连接设置向导的最后一个屏幕。
  7. 单击“完成”,将显示Samba服务器上的文件。Windows Samba文件

结论#

在本教程中,您学习了如何在CentOS 7上安装Samba服务器以及如何创建不同类型的共享和用户。 我们还向您展示了如何从Linux,macOS和Windows设备连接到Samba服务器。

桑巴森托斯

Sidebar