在 Ubuntu 上安装 NFS 服务器和客户端
NFS 或网络文件系统是一种分布式文件系统协议,最初仅由 Sun Microsystems 开发。通过 NFS,您可以允许系统通过网络与其他系统共享目录和文件。通过共享 NFS 文件,用户甚至程序可以访问远程系统上的信息,几乎就像在本地计算机上一样。
NFS 在客户端-服务器环境中运行,其中服务器负责管理客户端的身份验证、授权和管理,以及在特定文件系统内共享的所有数据。授权后,任意数量的客户端都可以访问共享数据,就像这些数据位于其内部存储中一样。在 Ubuntu 系统上设置 NFS 服务器非常简单。您只需在服务器和客户端计算机上进行一些必要的安装和配置,就可以开始使用了。
在本文中,我们将逐步解释如何设置 NFS 服务器和客户端,以便您可以将文件从一个 Ubuntu 系统共享到另一个。
我们已在 Ubuntu 18.04 LTS 系统上运行本文中描述的命令和过程,并最近在新的 Ubuntu 20.04 上对其进行了测试。由于我们使用 Ubuntu 命令行(终端)来执行所有操作,因此您可以使用系统破折号或组合键 Ctrl+Alt+T 打开它。
设置主机服务器
为了设置主机系统来共享目录,我们需要在其上安装 NFS 内核服务器,然后创建并导出我们希望客户端系统访问的目录。为了顺利设置主机端,请按照以下步骤操作:
第1步:安装NFS内核服务器
在安装 NFS 内核服务器之前,我们需要通过以下 apt 命令(sudo)将系统的存储库索引更新为互联网的存储库索引:
sudo apt-get update
上面的命令让我们可以通过 Ubuntu 存储库安装最新可用版本的软件。
现在,运行以下命令以在系统上安装 NFS 内核服务器:
sudo apt install nfs-kernel-server
系统将提示您选择是/否,以确认是否要继续安装。请输入 Y,然后按 Enter 继续,之后软件将成功安装到您的系统上。
第2步:创建导出目录
我们要与客户端系统共享的目录称为导出目录。您可以根据自己的选择命名;在这里,我们在系统的 mnt(mount) 目录中创建一个名为“sharedfolder”的导出目录。
使用以下命令,根据需要指定挂载文件夹名称,以root身份通过以下命令:
sudo mkdir -p /mnt/sharedfolder
由于我们希望所有客户端都能访问该目录,因此我们将通过以下命令取消导出文件夹的限制权限:
sudo chown nobody:nogroup /mnt/sharedfolder
sudo chmod 777 /mnt/sharedfolder
现在,客户端系统上所有组的所有用户都将能够访问我们的“共享文件夹”。
您可以根据需要在导出文件夹中创建任意数量的子文件夹,以供客户端访问。
步骤 3:通过 NFS 导出文件向客户端分配服务器访问权限
创建导出文件夹后,我们需要向客户端提供访问主机服务器计算机的权限。此权限是通过位于系统 /etc 文件夹中的导出文件定义的。请使用以下命令通过 Nano 编辑器打开此文件:
sudo nano /etc/exports
编辑该文件需要root权限;因此您需要在命令中使用 sudo 。您还可以在任何您个人喜欢的文本编辑器中打开该文件。
打开文件后,您可以允许访问:
- 通过在文件中添加以下行来单个客户端:
/mnt/sharedfolder clientIP(rw,sync,no_subtree_check)
- 通过在文件中添加以下行来多个客户端:
/mnt/sharedfolder client1IP(rw,sync,no_subtree_check)
/mnt/sharedfolder client2IP(rw,sync,no_subtree_check)
- 多个客户端,通过指定客户端所属的整个子网:
/mnt/sharedfolder subnetIP/24(rw,sync,no_subtree_check)
在此示例中,我们指定要授予导出文件夹(共享文件夹)访问权限的所有客户端的整个子网:
将所需的行添加到导出文件中,然后通过按 Ctrl+X、输入 Y,然后按 Enter 来保存它。
该文件中定义的“rw,sync,no_subtree_check”权限意味着客户端可以执行:
- rw:读写操作
- 同步:在应用之前将任何更改写入光盘
- no_subtree_check:防止子树检查
第四步:导出共享目录
在主机系统中完成上述所有配置后,现在是通过以下命令作为 sudo 导出共享目录的时候了:
sudo exportfs -a
最后,为了使所有配置生效,请重新启动NFS Kernel服务器,如下所示:
$sudo systemctl restart nfs-kernel-server
步骤 5:为客户端打开防火墙
一个重要的步骤是验证服务器的防火墙是否对客户端开放,以便他们可以访问共享内容。以下命令将配置防火墙以允许通过 NFS 访问客户端:
sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
在我们的示例中,我们通过以下命令授予对客户端计算机的整个子网的访问权限:
sudo ufw allow from 192.168.100/24 to any port nfs
现在,当您通过以下命令检查 Ubuntu 防火墙的状态时,您将能够看到客户端 IP 的操作状态为“允许”。
sudo ufw status
您的主机服务器现在已准备好通过 NFS 内核服务器将共享文件夹导出到指定的客户端。
配置客户端机器
现在需要对客户端进行一些简单的配置,以便将主机上的共享文件夹挂载到客户端上并顺利访问。
第1步:安装NFS Common
在安装 NFS Common 应用程序之前,我们需要通过以下 apt 命令(如 sudo)将系统的存储库索引更新为互联网的存储库索引:
sudo apt-get update
上面的命令让我们可以通过 Ubuntu 存储库安装最新可用版本的软件。
现在,运行以下命令以在您的系统上安装 NFS Common 客户端:
sudo apt-get install nfs-common
系统将提示您选择是/否,以确认是否要继续安装。请输入 Y,然后按 Enter 继续,之后软件将成功安装到您的系统上。
步骤2:为NFS主机的共享文件夹创建挂载点
您的客户端系统需要一个目录,可以在其中访问主机服务器在导出文件夹中共享的所有内容。您可以在系统上的任何位置创建此文件夹。我们正在客户端计算机的 mnt 目录中创建一个挂载文件夹:
sudo mkdir -p /mnt/sharedfolder_client
第三步:在客户端挂载共享目录
您在上述步骤中创建的文件夹与系统上的任何其他文件夹类似,除非您将共享目录从主机装载到这个新创建的文件夹。
使用以下命令将共享文件夹从主机挂载到客户端上的挂载文件夹:
sudo mount serverIP:/exportFolder_server /mnt/mountfolder_client
在我们的示例中,我们运行以下命令将“sharedfolder”从服务器导出到客户端计算机上的挂载文件夹“sharedfolder_client”:
sudo mount 192.168.100.5:/mnt/sharedfolder /mnt/sharedfolder_client
第 4 步:测试连接
请在 NFS 主机服务器的导出文件夹中创建或保存文件。现在,打开客户端计算机上的挂载文件夹;您应该能够查看此文件夹中共享和访问的相同文件。
结论
在 Ubuntu 系统上设置 NFS 客户端-服务器环境是一项简单的任务。通过本文,您了解了如何在服务器和客户端上安装所需的 NFS 包。您还学习了如何配置 NFS 服务器和客户端计算机,以便可以共享文件夹,然后顺利访问文件夹,而不会出现任何防火墙或权限相关的故障。现在,您可以使用 NFS 协议轻松地将内容从一个 Ubuntu 系统共享到另一个系统。