NFS或网络文件系统是一种分布式文件系统协议,最初是由Sun Microsystems构建的。通过NFS,您可以允许系统通过网络与其他人共享目录和文件。在NFS文件共享中,用户甚至程序可以访问远程系统上的信息,就像它们驻留在本地计算机上一样。
NFS在客户端 - 服务器环境中运行,其中服务器负责管理客户端的身份验证,授权和管理,以及特定文件系统内共享的所有数据。授权后,任意数量的客户端都可以访问共享数据,就好像它们存在于其内部存储中一样。在Ubuntu系统上设置NFS服务器非常简单。您需要做的就是在服务器和客户端计算机上进行一些必要的安装和配置,这样你就可以了。
在本文中,我们将逐步说明如何设置NFS服务器和客户端,使您能够将文件从一个Ubuntu系统共享到另一个Ubuntu系统。
我们在Ubuntu 18.04 LTS系统上运行了本文中描述的命令和过程。由于我们使用Ubuntu命令行,终端,来执行所有操作,您可以通过Ctrl + Alt + T快捷方式打开它。
设置主机服务器
为了设置主机系统以共享目录,我们需要在其上安装NFS内核服务器,然后创建并导出我们希望客户端系统访问的目录。请按照以下步骤顺利设置主机端:
第1步:安装NFS服务器
在安装NFS内核服务器之前,我们需要通过以下apt命令以sudo的形式将系统的存储库索引更新为Internet的存储库索引:
linuxidc@linuxidc:~/linuxidc.com$ sudo apt-get update
上面的命令允许我们通过Ubuntu存储库安装最新的软件版本。
现在,运行以下命令以在系统上安装NFS内核服务器:
linuxidc@linuxidc:~/linuxidc.com$ sudo apt install nfs-kernel-server
系统将提示您使用Y/n选项确认是否要继续安装。 请输入Y然后按Enter继续,之后软件将成功安装在您的系统上。
第2步:创建导出目录
我们要与客户端系统共享的目录称为导出目录。 你可以根据自己的选择来命名; 在这里,我们在系统的mnt(mount)目录中创建一个名为“linuxidc”的导出目录。
使用以下命令,根据需要通过以下命令指定安装文件夹名称:
linuxidc@linuxidc:~/linuxidc.com$ sudo mkdir -p /mnt/linuxidc
因为我们希望所有客户端都能访问该目录,我们将通过以下命令删除文件夹的限制权限:
linuxidc@linuxidc:~/linuxidc.com$ sudo chown nobody:nogroup /mnt/linuxidc
linuxidc@linuxidc:~/linuxidc.com$ sudo chmod 777 /mnt/linuxidc
现在,客户端系统上所有组的所有用户都可以访问我们的“共享文件夹”。
您可以根据需要在导出文件夹中创建任意数量的子文件夹,供客户端访问。
步骤3:通过NFS导出文件为客户端分配服务器访问权限
创建导出文件夹后,我们需要为客户端提供访问主机服务器计算机的权限。 此权限是通过位于系统的/etc文件夹中的exports文件定义的。 请使用以下命令通过Nano编辑器打开此文件:
linuxidc@linuxidc:~/linuxidc.com$ sudo nano /etc/exports
编辑此文件需要root访问权限; 因此,您需要在命令中使用sudo。 您也可以在任何您喜欢的个人文本编辑器中打开该文件。
打开文件后,您可以允许访问:
- 单个客户端通过在文件中添加以下行:
/mnt/linuxidc clientIP(rw,sync,no_subtree_check)
- 通过在文件中添加以下行来多个客户端:
/mnt/linuxidc client1IP(rw,sync,no_subtree_check)
/mnt/linuxidc client2IP(rw,sync,no_subtree_check)
- 多个客户端,通过指定客户端所属的整个子网:
/mnt/linuxidc 192.168.182.0/24(rw,sync,no_subtree_check)
/mnt/linuxidc 192.168.182.0/24(rw,sync,no_subtree_check)
在此示例中,我们指定了要为我们的主目录文件夹(linuxidc)授予访问权限的所有客户端的整个子网:
将所需的行添加到导出文件中,然后按Ctrl + X,输入Y,然后按Enter键保存。
此文件中定义的权限“rw,sync,no_subtree_check”表示客户端可以执行以下操作:
- rw:读写操作
- sync: 在应用之前将任何更改写入光盘
- no_subtree_check:阻止子树检查
注:对于上面的配置,客户端访问共享目录下的文件却没有写的权限,可以采用如下配置方式
(rw,sync,no_root_squash,no_subtree_check)
这样客户端在root用户下就可以对共享目录下的文件有写的操作,虽然不安全,但是对于文件的写权限很有效(no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!)。
第4步:导出共享目录
在主机系统中完成上述所有配置后,现在可以通过以下命令将共享目录导出:
linuxidc@linuxidc:~/linuxidc.com$ sudo exportfs -a
最后,为了使所有配置生效,请按如下方式重新启动NFS服务器:
linuxidc@linuxidc:~/linuxidc.com$ sudo systemctl restart nfs-kernel-server
第5步:为客户端打开防火墙
重要的一步是验证服务器的防火墙是否对客户端开放,以便他们可以访问共享内容。 以下命令将配置防火墙以通过NFS授予客户端访问权限:
sudo ufw allow from [clientIP or clientSubnetIP] to any port nfs
在我们的示例中,我们通过以下命令访问客户端计算机的整个子网:
linuxidc@linuxidc:~/linuxidc.com$ sudo ufw allow from 192.168.182.0/24 to any port nfs
现在,当您通过以下命令检查Ubuntu防火墙的状态时,您将能够将操作状态视为客户端IP的“允许”。
linuxidc@linuxidc:~/linuxidc.com$ sudo ufw status
您的主机服务器现在已准备好通过NFS服务器将共享文件夹导出到指定的客户端。
配置客户端计算机
现在是时候对客户机进行一些简单的配置,这样主机的共享文件夹就可以挂载到客户端,然后顺利访问。
测试的客户端服务器是Ubuntu 18.10
第1步:安装NFS Common
在安装NFS Common应用程序之前,我们需要通过以下apt命令以sudo的形式更新我们系统的存储库索引和Internet的索引:
linuxidc@linuxidc:~$ sudo apt-get update
上面的命令允许我们通过Ubuntu存储库安装最新的软件版本。
现在,运行以下命令以在系统上安装NFS Common客户端:
linuxidc@linuxidc:~$ sudo apt-get install nfs-common
系统将提示您使用Y/n选项确认是否要继续安装。 请输入Y然后按Enter继续,之后软件将成功安装在您的系统上。
第2步:为NFS主机的共享文件夹创建安装点
您的客户端系统需要一个目录,可以访问导出文件夹中主机服务器共享的所有内容。 您可以在系统的任何位置创建此文件夹。 我们在客户端机器的mnt目录中创建一个mount文件夹:
linuxidc@linuxidc:~$ sudo mkdir -p /mnt/linuxidc_client
第3步:在客户端上挂载共享目录
您在上述步骤中创建的文件夹与系统上的任何其他文件夹类似,除非您将共享目录从主机安装到此新创建的文件夹。
使用以下命令将共享文件夹从主机安装到客户端上的装入文件夹:
sudo mount serverIP:/shareFolder_server /mnt/mountfolder_client
在我们的示例中,我们运行以下命令将“linuxidc”从服务器导出到客户端计算机上的mount文件夹“linuxidc_client”:
linuxidc@linuxidc:~$ sudo mount 192.168.182.172:/mnt/linuxidc /mnt/linuxidc_client
第4步:测试连接
请在NFS主机服务器的导出文件夹中创建或保存文件。 现在,打开客户端计算机上的mount文件夹; 您应该能够在此文件夹中查看共享和访问的同一文件。
总结
在Ubuntu系统上设置NFS客户端 - 服务器环境是一项简单的任务。 通过本文,您学习了如何在服务器和客户端上安装所需的NFS包。 您还学习了如何配置NFS服务器和客户端计算机,以便可以共享文件夹,然后在没有任何防火墙或权限相关故障的情况下顺利访问文件夹。 现在,您可以使用NFS协议轻松地将内容从一个Ubuntu系统共享到另一个系统。
如果你还有什么疑问,请在下面的留言框里写下你宝贵的建议,谢谢阅读。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-11/155331.htm