如何在CentOS 7上挂载SMB共享
说明
在本教程中,我们将学习如何在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版本 |
---|---|---|---|
WS12FS01 | Windows Server 2012 R2 | \WS12FS01\libraries\core | 2.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