在CentOS 8 / RHEL 8上设置Samba服务器以进行文件共享

在本教程中,我们将学习如何在CentOS 8 / RHEL8上安装和配置samba服务器以在本地网络上共享文件。 Samba是针对Unix和Linux的免费开源SMB / CIFS协议实现,它允许在局域网中的Linux,Windows和macOS计算机之间共享文件和打印。

Samba通常在Linux上安装和运行。 它包含几个服务于不同但相关目的的程序,其中最重要的两个是:

  • smbd:提供SMB / CIFS服务(文件共享和打印),也可以充当Windows域控制器。
  • 纳米级:此守护程序提供NetBIOS名称服务,侦听名称服务器请求。 它还允许网络上的其他计算机找到Samba服务器。

如何在CentOS 8 / RHEL8上安装Samba服务器

Samba包含在大多数Linux发行版中。 要在CentOS 8 / RHEL8上安装Samba,请在终端中运行以下命令。

sudo dnf install samba

要检查您的Samba版本,请运行

smbd --version

样本输出:

Version 4.10.4

然后发出以下命令以启动 smbdnmbd 服务。

sudo systemctl start smb nmb

在启动时启用自动启动。

sudo systemctl enable smb nmb

要检查Samba服务是否正在运行,请发出以下命令。

systemctl status smb nmb

一旦开始, smb 守护程序将监听TCP端口139和445。 nmbd 将在UDP端口137和138上侦听。

  • TCP 139:用于文件和打印机共享以及其他操作。
  • TCP 445:无NetBIOS的CIFS端口。
  • UDP 137:用于NetBIOS网络浏览。
  • UDP 138:用于NetBIOS名称服务。

运行以下命令以在防火墙中打开以上端口。

sudo firewall-cmd --permanent --add-service=samba

重新加载firwall守护程序以使更改生效。

sudo systemctl reload firewalld

创建私人Samba共享

在本节中,我们将看到如何创建私有Samba共享,该共享需要客户端输入用户名和密码才能获得访问权限。 Samba的主要配置文件位于: /etc/samba/smb.conf。 您可以使用命令行文本编辑器在终端中对其进行编辑,例如 nano

sudo nano /etc/samba/smb.conf

默认情况下,有4个部分:

  • 全球
  • 房屋
  • 印表机
  • 打印$

在里面 [global] 部分, workgroup 默认情况下设置为SAMBA。

workgroup = SAMBA

确保值 workgroup 与Windows计算机的工作组设置相同。 您可以通过以下方法在Windows计算机上找到设置: Control Panel > System and Security > System

在本文中,我将使用Windows默认工作组名称。

workgroup = WORKGROUP

建议使用 hosts allow 用于创建IP地址白名单的参数,以防止未经授权的访问。 将以下行添加到 [global] 部分,这将允许本地主机和客户端 192.168.0.0/24 网络以访问Samba服务。 如果使用其他网络范围,请更换 192.168.0 与你自己的。

hosts allow = 127. 192.168.0

提示:您也可以将CIDR表示法用于网络范围,例如 hosts allow = 127.0.0.1 192.168.0.0/24

然后向下滚动到文件底部。 (在nano文本编辑器中,您可以通过按 CTRL+W 然后 CTRL+V。 )添加一个新的部分,如下所示。

[Private]
        comment = needs username and password to access
        path = /srv/samba/private/
        browseable = yes
        guest ok = no
        writable = yes
        valid users = @samba

哪里:

  • Private 是将在Windows计算机上显示的文件夹名称。 您可以使用任何喜欢的名称。
  • 注释是对共享文件夹的描述。
  • path参数指定共享文件夹的路径。 我用 /srv/samba/private/ 举个例子。
  • browseable = yes:允许网络中的其他计算机查看Samba服务器和Samba共享。 如果设置为no,则用户必须知道Samba服务器的名称,然后在文件管理器中手动输入路径以访问共享文件夹。
  • guest ok = no:禁用访客访问。 换句话说,您需要在客户端计算机上输入用户名和密码才能访问共享文件夹。
  • writable = yes:向客户端授予读取和写入权限。
  • valid users = @samba:仅允许samba组中的用户访问此Samba共享。

保存并关闭文件。 (要在nano文本编辑器中保存文件,请按 Ctrl+O,然后按Enter确认要写入的文件名。 要关闭文件,请按 Ctrl+X。)现在我们需要创建一个Samba用户。 首先,我们需要使用以下命令创建一个标准的Linux用户帐户。 更换 username 与您所需的用户名。

sudo adduser username

系统将提示您设置Unix密码。 之后,您还需要使用以下命令为新用户设置单独的Samba密码:

sudo smbpasswd -a username

创建 samba 组。

sudo groupadd samba

并将此用户添加到 samba 组。

sudo gpasswd -a username samba

创建私人共享文件夹。

sudo mkdir -p /srv/samba/private/

samba 组需要对共享文件夹具有读取,写入和执行权限。 您可以通过执行以下命令来授予这些权限。

sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/

我们还需要将该目录标记为 samba_share_t 这样SELinux允许Samba对其进行读写。

sudo chcon -t samba_share_t /srv/samba/private/ -R

接下来运行以下命令以检查是否存在语法错误。

testparm

如果更改,Samba配置文件将每分钟自动重新加载一次。 您可以手动重启 smbdnmbd 守护程序使更改立即生效。

sudo systemctl restart smb nmb

如何创建未经身份验证的Samba公共共享

要创建公共共享而不需要用户名和密码,必须满足以下条件。

  • security = user 在Samba配置文件的global部分中。
  • map to guest = bad user 在Samba配置文件的global部分中。 这将导致 smbd 使用来宾帐户对未在Samba服务器上注册帐户的客户端进行身份验证。 由于它是访客帐户,因此Samba客户无需输入密码。
  • guest ok = yes 在共享定义中允许访客访问。
  • 将公用文件夹的读取,写入和执行权限授予 nobody 帐户,这是默认的来宾帐户。

打开并编辑Samba配置文件。

sudo nano /etc/samba/smb.conf

在里面 [global] 部分,请确保 workgroup 与Windows计算机的工作组设置相同。

workgroup = WORKGROUP

您可以通过以下方法在Windows计算机上找到设置: Control Panel > System and Security > System

桑巴-centos8-rhel8

将以下行添加到 [global] 部分。

map to guest = bad user

然后向下滚动到文件底部,并粘贴以下几行。

[public]
       comment = public share, no need to enter username and password
       path = /srv/samba/public/
       browseable = yes
       writable = yes
       guest ok = yes

保存并关闭文件。 接下来,创建 /srv/public/ 夹。

sudo mkdir -p /srv/samba/public

如果要允许对公共共享进行写操作,则必须将此文件夹的权限更改为777。

sudo chmod 777 /srv/samba/public/ -R

我们还需要将该目录标记为 samba_share_t 这样SELinux允许Samba对其进行读写。

sudo chcon -t samba_share_t /srv/samba/public/ -R

重新启动smbd和nmbd。

sudo systemctl restart smb nmb

从Windows访问Samba共享文件夹

在同一网络中的Windows计算机上,打开“文件资源管理器”并单击 Network 在左窗格中。 如果看到以下消息,则需要单击该消息,然后打开网络发现和文件共享。

File sharing is turned off. Some network computers and devices might not be visible.

接下来,输入 \ 在文件资源管理器的地址栏中输入Samba服务器的IP地址,如下所示: \192.168.0.102。 您将在Samba服务器上看到共享资源的列表。

从Windows访问samba共享

然后双击共享文件夹。 要访问私人共享,您需要输入samba用户名和密码。 您无需这样做即可访问公共共享。

从Windows 10访问samba共享

连接后,您可以读取,写入和删除Samba共享文件夹中的文件。

连接错误

如果出现以下错误:

You do not have permission to access \hostnameshare-name. Contact your network administrator to request access.

您可以尝试从命令提示符连接到Samba共享。 打开命令提示符,然后运行以下命令以关闭当前的Samba会话。

net use \samba-server-ipshare-name /delete

接下来,使用以下命令连接到Samaba共享:

net use \samba-server-ipshare-name /user:samba-username password

成功完成上述命令后,转到文件资源管理器中的“网络”选项卡,现在您应该可以访问Samba共享了。

驱动器映射

Windows操作系统的一项功能是能够将驱动器号(例如S :)映射到远程目录的功能。 映射驱动器号 S: 到Samba共享,右键单击Samba共享文件夹,然后选择 地图网络驱动器。 然后选择一个驱动器号,然后单击完成。

映射网络驱动器samba

建立驱动器映射后,应用程序可以通过驱动器号访问Samba共享中的文件 S:。 当您登录Windows计算机时,此Samba共享将自动安装。

在Linux上的Nautilus File Manager中访问Samba共享文件夹

如果您使用的是Nautilus文件管理器,则单击 Other Locations 在左窗格中。 在底部,您将看到一个选项 连接到服务器。 要访问您的Samba共享,请输入 smb:// 然后是Samba服务器的IP地址,然后按Enter。 例如:

  • smb://192.168.0.102

桑巴舞曲8

您将在Samba服务器上看到共享资源的列表。

桑巴股份

如果单击私有共享文件夹,则需要输入Samba用户名和密码。 如果单击公共共享文件夹,则选择以匿名身份连接。

samba共享密码认证

在Linux上从命令行自动挂载Samba共享

如果需要在引导时自动挂载Samba共享,则可以使用命令行进行挂载,然后在 /etc/fstab 文件。 为此,您需要安装 cifs-utils 包。

CentOS / RHEL

sudo dnf install cifs-utils

Debian / Ubuntu

sudo apt install cifs-utils

然后为Samba共享创建一个安装点。

sudo mkdir /mnt/samba-private

现在,您可以使用以下命令挂载私有共享文件夹。

sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/

它将要求您输入Samba密码。 之后,将其安装在 /mnt/samba-private/ 目录。

要自动挂载Samba共享,请编辑 /etc/fstab 文件。

sudo nano /etc/fstab

在文件中添加以下行。

//192.168.0.102/private  /mnt/samba-private   cifs    x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show   0   0

哪里:

  • //192.168.0.102/私人:Samba服务器的IP地址和共享名。
  • / mnt / samba-private:Samba共享的安装点。
  • 到岸价:文件系统类型
  • x-systemd.automount:此选项告诉systemd为文件系统创建一个自动挂载单元。 我们之所以这样使用,是因为它使我们能够在访问网络后挂载远程文件系统。
  • _netdev:这指定安装需要网络。
  • 凭证=:Linux应该在 /etc/samba-credential.conf 文件。
  • uid = 1000,gid = 1000:默认情况下,挂载的文件系统将由root用户拥有。 我们用 uidid 更改文件系统的所有权。 通常你用自己的 uidid,默认情况下均为1000。
  • x-gvfs-show注意:如果使用的是GNOME桌面环境或其派生版本,则可以使用此选项在文件管理器中显示已挂载的文件系统。

保存并关闭文件。 然后创建凭证文件。

sudo nano /etc/samba-credential.conf

在文件中添加以下行。

username=your_samba_username
password=samba_password
domain=WORKGROUP

保存并关闭文件。 确保只有root用户才能读取此文件。

sudo chmod 600 /etc/samba-credential.conf

如果立即重新启动Linux计算机,则Samba共享将自动安装。

故障排除技巧

如果您的Samba服务器未按预期运行,则可以在下面查看日志文件。 /var/log/samba/ 目录。 您可以在 [global] 如果要记录更多信息,请在/etc/samba/smb.conf文件的“文件”部分中增加日志级别。

log level = 2

包起来

而已! 我希望本教程可以帮助您在CentOS 8 / RHEL8上设置Samba服务器。 与往常一样,如果您发现此帖子有用,请订阅我们的免费新闻通讯。 您可能还需要阅读以下文章,以在本地网络上共享打印机。

  • 在CentOS 8 / RHEL 8(Bonjour,IPP,Samba,AirPrint)上设置CUPS打印服务器
Sidebar