如何在CentOS 7上挂载SMB共享

时间:2020-01-09 10:42:40  来源:igfitidea点击:

说明

在本教程中,我们将学习如何在CentOS 7上安装SMB共享。

CentOS为挂载Microsoft CIFS或者SMB共享提供支持。我们不仅可以限制从Microsoft Windows托管的共享,还可以从任何使用SMB协议的网络设备安装共享。这几乎包括市场上的所有NAS设备。

如果我们了解如何在较早版本的Red Hat Enterprise Linux或者CentOS上安装SMB共享,则说明是相同的。

共享配置

在本教程中,我在Windows Server 2012 R2服务器上准备了一个名为Core Library的共享,该共享服务器是Active Directory域的成员。

主机名操作系统共享路径SMB版本
WS12FS01Windows Server 2012 R2\WS12FS01\libraries\core2.0

对于WS12FS01的共享权限,我们将"完全控制"授予"所有人"。不要上当以为这是不安全的。尽管每个人都可以访问共享,但是承载共享的卷上的NTFS权限将取代共享权限。通过离开所有人并授予完全控制权,我们只需要管理文件系统本身的权限就可以节省自己的工作。

对于NTFS权限,我们创建了一个名为_share_library_core的Active Directory帐户,并为其授予了Modify,Read&Execute,列出文件夹内容,Read和Write的权限。当我们将共享装载到CentOS 7时,将使用该帐户。

在本教程中,我们使用Active Directory帐户作为示例,说明某人如何在企业环境中完成此操作。

但是,不需要Active Directory帐户。只要CentOS服务器具有一个可以在发布共享的主机上成功进行身份验证的帐户,该帐户在Active Directory中实际存在的位置还是在文件服务器本身上的本地位置都没有关系。

准备CentOS 7以挂载SMB共享

除非我们自定义安装,否则默认的CentOS 7构建将无法挂载SMB \ CIFS共享。我们需要在服务器上安装一个软件包,以使其了解SMB协议。

  • 从默认的CentOS yum存储库安装cifs-utils软件包。
yum install cifs-utils
  • 接下来,我们需要在CentOS服务器上的一个帐户,该帐户将映射到授予SMB共享权限的Windows帐户_share_library_core。我们将创建一个名为svc_library_core的服务帐户,其用户ID(UID)为5000。
useradd -u 5000 svc_library_core
  • 我们还希望在CentOS服务器上有一个可以映射到共享的组。该组将包含需要访问共享的所有Linux帐户。我们的帐户称为share_library_core,其组ID(gid)为6000。
groupadd -g 6000 share_library_core
  • 最后,将需要访问SMB共享的所有Linux帐户添加到新创建的Linux组中。我有一个名为user1的现有帐户,该帐户将添加到share_library_core组中。
usermod -G share_library_core -a user1

挂载SMB共享

现在,我们准备挂载我们的SMB共享。在下面的示例中,我们将SMB共享临时安装到我们的CentOS服务器上。共享将保持挂载状态,直到重新引导服务器为止。

  • 创建一个目录以将SMB共享挂载到其中。我们将共享安装在名为lib_core的目录中。
mkdir /lib_core
  • 使用mount.cifs命令,使用Active Directory用户帐户_share_library_core将SMB共享安装到lib_core中。我们需要将svc_library_core帐户(5000)的UID和我们的share_library_core组(6000)的gid映射到SMB共享。
mount.cifs \\WS12FS01\libraries\core /lib_core -o user=_share_library_core,pass="secret",uid=5000,gid=6000

多余的反斜杠()不是错字。反斜杠用于转义某些字符。因此,访问Microsoft共享时,我们必须加倍使用它们。

  • 如果没有错误出现,则共享应该成功安装。验证这一点,使用df命令或者安装。

隐藏SMB用户凭证

在上面的示例中,我们被迫在命令行中输入用户名和密码。这是一个主要的安全问题,因为有人可以浏览bash历史记录来获取凭据,或者在我们键入凭据时可以看到它们。幸运的是,有一种方法可以使用凭据文件来解决此问题。

  • 如果不是Root,则SU进入Root帐户。
su - root
  • 在Root的主目录中创建一个凭证文件。出于组织原因,我通常在Root家的子目录中创建此文件。但是对于此示例,我将其放置在/ root中。
touch /root/creds_smb_library_core
  • 修改文件的权限,以便仅授予根帐户读取权限。任何群组或者其他用户都不能访问该文件。
chmod 0600 /root/creds_smb_library_core
  • 在文本编辑器中打开文件。我喜欢使用VI,但是我们可以使用任何喜欢的方法。
vi /etc/root/creds_smb_library_core
  • 将以下行添加到文件中。切记替换用户名和密码值,以便它们与环境匹配。
username=_share_library_core
password=secret
用户名
Windows或者Active Directory用户名授予了在Windows文件服务器上共享的权限
给用户名的密码
  • 将更改保存到凭据文件,然后退出文本编辑器。
  • 挂载SMB共享。但是,我们没有使用user和pass选项,而是使用了凭据选项并指向我们的凭据文件。
mount.cifs \\WS12FS01\libraries\core /lib_core -o credentials=/root/creds_smb_library_core,uid=5000,gid=6000

使用FSTAB的永久SMB挂载

上面示例的缺点是,这些安装只是临时的,不会在系统引导时重新安装。使安装永久化,我们需要将其添加到fstab中。

  • 在文本编辑器中打开/ etc / fstab。
vi /etc/fstab
  • 将以下行添加到fstab中。请记住用与环境匹配的值替换这些值。
\\WS12FS01\libraries\core /lib_core    cifs    credentials=/root/creds_smb_library_core,uid=5000,gid=6000 0 0
  • 保存更改并退出文本编辑器。
  • 下次重新启动CentOS服务器时,将挂载SMB共享。要立即挂载共享,请使用mount命令。
mount -a