如何在 Ubuntu 18.04 上安装和配置 NFS 服务器

这篇具有很好参考价值的文章主要介绍了如何在 Ubuntu 18.04 上安装和配置 NFS 服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网络文件系统(NFS)是一种分布式文件系统协议,允许您通过网络共享远程目录。 使用 NFS ,您可以在系统上安装远程目录,并使用远程计算机上的文件,就像它们是本地文件一样。

默认情况下,NFS 协议未加密,与 Samba 不同,它不提供用户身份验证。 对服务器的访问受客户端IP地址或主机名的限制。

在本教程中,我们将讨论如何在 Ubuntu 18.04 上设置 NFSv4 服务器。 我们还将向您展示如何在客户端上安装 NFS 文件系统。

准备条件

此示例假定您有一台运行 Ubuntu 18.04 的服务器和另一台运行任何其他 Linux发行版的服务器。 服务器和客户端应该能够通过专用网络相互通信。 如果您的托管服务提供商不提供私有 IP 地址,您可以使用公共 IP 地址并配置服务器防火墙,以允许端口 2049 上的流量仅来自可信来源。

此示例中的计算机具有以下IP:

NFS Server IP: 192.168.33.10
NFS Clients IPs: From the 192.168.33.0/24 range

设置 NFS 服务器
我们将从安装和配置 NFS 服务器开始。

安装NFS服务器

刷新包索引并安装 NFS 服务器包:

sudo apt update
sudo apt install nfs-kernel-server

一旦安装完成, NFS 服务将会自动启动。

默认情况下,在 Ubuntu 18.04 上禁用 NFS 版本 2。 版本 3 和 4 已启用。 您可以通过运行以下 cat 命令来验证:

sudo cat /proc/fs/nfsd/versions

输出类似如下:

-2 +3 +4 +4.1 +4.2

NFS v2 现在很老了,没有理由启用它。

NFS 服务器配置选项在 /etc/default/nfs-kernel-server/etc/default/nfs-common 文件中设置。 在我们的例子中,默认设置就足够了。

创建文件系统

配置 NFSv4服务器时,最好使用全局 NFS 根目录,并将实际目录绑定到共享挂载点。 在此示例中,我们将使用 /srv/nfs4 director 作为 NFS 根目录。

我们将分享两个具有不同配置设置的目录 ( /var/www /opt/backups ) ,以更好地解释如何配置 NFS 挂载。

/var/www/ 由用户和组拥有,www-data/opt/backupsroot 拥有。

  • 使用 mkdir 命令创建导出文件系统:
sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /srv/nfs4/www
  • 挂载实际目录:
sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www
  • 要使绑定挂载永久化,请打开 /etc/fstab 文件:
sudo vim /etc/fstab
  • 并添加以下行:
/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

导出文件系统

下一步是定义将由 NFS 服务器,共享选项和允许访问这些文件系统的客户端导出的文件系统。 为此,请打开 /etc /exports 文件:

/etc/exports 文件还包含描述如何导出目录的注释。

在我们的例子中,我们需要导出 www 和 backups 目录,并且只允许访问 192.168.33.0/24 网络上的客户端:

  • 内容如下:
/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.33.110(rw,sync,no_subtree_check)

第一行包含fsid = 0,它定义了NFS根目录/srv/nfs。 此NFS卷上的访问权限仅授予192.168.33.0/24子网中的客户端。 需要 crossmnt 选项来共享作为导出目录的子目录的目录。

在第二行显示如何为一个文件系统指定多个导出规则。 它导出 /srv/nfs4/backups目录,并且只允许对整个192.168.33.0/24范围的读访问以及对 192.168.33.3 的读写访问。 sync 选项告诉NFS在回复之前将更改写入磁盘。

最后一行应该是不言自明的。 有关所有可用选项的更多信息,请在终端中键入 man exports。

  • 保存文件并导出共享:
sudo exportfs -ra

每次修改 /etc/exports 文件时都需要运行上面的命令。 如果有任何错误或警告,它们将显示在终端上。

  • 要查看当前活动的导出及其状态,请使用:
sudo exportfs -v

输出将包括其选项的所有共享。 如您所见,还有一些我们尚未在 /etc/exports 文件中定义的选项。 这些是默认选项,如果您想更改它们,您需要明确设置这些选项。

内容如下:

/srv/nfs4/backups 192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www  	  192.168.33.110(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	  192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups 192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

Ubuntu 上,默认情况下启用 root_squash。 这是有关NFS安全性的最重要选项之一。 它可以防止从客户端连接的 root 用户对已挂载的共享具有 root 权限。 它会将根 UIDGID 映射到 nobody/nogroup UID/GID

为了使客户端计算机上的用户能够访问, NFS 希望客户端的用户和组 ID 与服务器上的用户和组 ID 匹配。 另一种选择是使用 NFSv4 idmapping 功能将用户和组 ID 转换为名称,反之亦然。

此时,您已在 Ubuntu 服务器上设置了 NFS 服务器。 您现在可以转到下一步并配置客户端并连接到 NFS 服务器。

配置防火墙

如果在网络上运行防火墙,则需要添加一条规则以启用 NFS 端口上的流量。

  • 假设您使用 UFW 管理防火墙以允许从 192.168.33.0/24 子网进行访问,则需要运行以下命令:
sudo ufw allow from 192.168.33.0/24 to any port nfs
  • 要验证更改,运行以下命令:
sudo ufw status
  • 输出应显示允许端口2049上的流量:
To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

既然已设置NFS服务器并导出共享,则下一步将配置客户端并装入远程文件系统。您也可以在 macOSWindows 机器上安装 NFS 共享,但我们将专注于 Linux 系统。

安装NFS客户端

在客户端计算机上,我们只需要安装安装远程 NFS 文件系统所需的工具。

DebianUbuntu 上安装 NFS 客户端
包含用于在基于 Debian 的发行版上挂载 NFS 文件系统的程序的程序包的名称是 nfs-common。 要安装它运行:

sudo apt update
sudo apt install nfs-common

CentOSFedora 上安装 NFS 客户端,在 Red Hat 及其衍生产品上安装 nfs-utils 包:

sudo yum install nfs-utils

挂载文件系统

我们将在 IP 192.168.33.110 的客户端计算机上工作,它具有对 /srv/nfs4/www 文件系统的读写访问权限,并且只读访问 /srv/nfs4/backups 文件系统。

为挂载点创建两个新目录。 您可以在任何所需位置创建此目录。

sudo mkdir -p /backups
sudo mkdir -p /srv/www

使用 mount 命令挂载导出的文件系统:
我们可以通过 mount --bind 命令来将两个目录连接起来,mount --bind 命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

其中 192.168.33.10NFS 服务器的 IP。 您也可以使用主机名而不是 IP 地址,但客户端计算机需要解析它。 这通常通过将主机名映射到 /etc/hosts 文件中的IP来完成。安装 NFSv4 文件系统时,需要省略 NFS 根目录,因此需要使用/backups而不是 /srv/nfs4/backups

  • 使用 mount 或 df 命令验证是否已成功装入远程文件系统:
df -h

Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00   38G  1.7G   36G   5% /
devtmpfs                         236M     0  236M   0% /dev
tmpfs                            244M     0  244M   0% /dev/shm
tmpfs                            244M  4.5M  240M   2% /run
tmpfs                            244M     0  244M   0% /sys/fs/cgroup
/dev/sda2                       1014M   87M  928M   9% /boot
tmpfs                             49M     0   49M   0% /run/user/1000
192.168.33.10:/backups           9.7G  1.2G  8.5G  13% /backups
192.168.33.10:/www               9.7G  1.2G  8.5G  13% /srv/www
  • 要在重新引导时使挂载永久化,请打开 /etc/fstab 文件:
sudo vim /etc/fstab

并添加以下行:

192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

要在安装 NFS 文件系统时查找有关可用选项的更多信息,请在终端中键入 man nfs

安装远程文件系统的另一个选择是使用 autofs 工具或创建 systemd 单元。

测试NFS访问

让我们通过为每个共享创建一个新文件来测试对共享的访问。

  • 首先,尝试使用 touch 命令在 /backups 目录中创建一个测试文件:
sudo touch /backups/test.txt

/backup 文件系统以只读方式导出,正如预期的那样,您将看到 Permission denied 错误消息:

touch: cannot touch /backups/test: Permission denied
  • 接下来,尝试使用 sudo 命令以 root 身份创建 /srv/www 目录的测试文件:
sudo touch /srv/www/test.txt
  • 同样,您将看到Permission denied消息。
touch: cannot touch '/srv/www': Permission denied

如果您记得 /var/www 目录由 www-data 用户拥有,并且此共享具有 root_squash 选项集,该选项将 root 用户映射到对远程共享没有写权限的 nobody 用户和 nogroup 组。

假设您在客户端计算机上使用了与远程服务器上相同的UIDGIDwww-data(例如,如果您在两台计算机上都安装了 nginx),则可以测试以用户身份创建文件 www-data 使用以下命令:

sudo -u www-data touch /srv/www/test.txt

该命令将不显示输出,这意味着文件已成功创建。

要验证它列出 /srv/www 目录中的文件:

ls -la /srv/www

输出应显示新创建的文件:

drwxr-xr-x 3 www-data www-data 4096 Jun 23 22:18 .
drwxr-xr-x 3 root     root     4096 Jun 23 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Jun 23 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Jun 23 22:18 test.txt

卸载NFS文件系统
如果不再需要远程NFS共享,则可以使用 umount 命令将其卸载为任何其他已装入的文件系统。 例如,要卸载 /backup 共享,您将运行:

sudo umount /backups

如果在 /etc/fstab 文件中定义了挂载点,请确保通过在行的开头添加#来删除该行或将其注释掉。

来源参考:憧憬在 aoppp.com发布文章来源地址https://www.toymoban.com/news/detail-600983.html

到了这里,关于如何在 Ubuntu 18.04 上安装和配置 NFS 服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在Ubuntu 20.04|18.04上安装 FreeSwitch

    PBX 是 Private Branch Exchange 的缩写。它是在组织内部使用的专用电话系统,并根据特定组织的需求进行定制。组织中的 PBX 用户可以在内部进行内部通信,也可以与外界进行外部通信。VoIP(IP 语音)、ISDN(综合业务数字网络)或模拟等渠道促进了外部通信。 使用 PBX 电话系统的

    2024年02月09日
    浏览(68)
  • Ubuntu18.04下安装配置AndroidStudio软件图文教程

    运行环境:操作系统为Ubuntu18.04,android-studio版本为2022.1.1.19-linux,Java版本为jdk8,安装路径/opt/android-studio/,当前用户为xqf222,sdk下载路径默认为/home/xqf222/Android/Sdk 详细步骤和指令如下: 1.安装JDK8: 按组合键Ctrl+Alt+T打开终端命令窗口, 输入安装JDK8的命令:sudo apt-get install openj

    2023年04月10日
    浏览(46)
  • 【Linux】MySQL的安装及配置(Ubuntu-18.04)

    一、安装MySQL         分别安装MySQL服务器、MySQL客户端、C/C++开发库 二、配置MySQL         1.查看默认配置文件,此处的user和password为默认提供的,后边需要进行修改。         2.通过系统的默认配置先登录MySQL,密码输入系统分配的默认密码J9fhynK7XZBjqwXA,登陆进入后再进行

    2024年04月28日
    浏览(39)
  • Ubuntu 18.04 Docker 安装配置 Apollo 6.0

    Apollo 6.0 安装完全指南 在这一步出错: 进入到 Apollo 源码根目录,打开终端,执行下述命令以启动 Apollo Docker 开发容器 并没有成功启动 Apollo docker 开发容器 Apollo 6.0 安装完全指南 下午来了之后在 Apollo 源码根目录下重新执行如下命令以启动 Apollo Docker 容器 很意外居然没有报

    2024年02月16日
    浏览(48)
  • Ubuntu18.04 安装vscode 配置C#编译器

    环境: ubuntu 18.04 依赖库: SDK .net-7 安装对象: vscode 在终端: ./dotnet-install.sh --channel 7.0 遇见如下提示: dotnet:未找到命令 如下操作: 下载–解压–安装 wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb

    2024年02月16日
    浏览(45)
  • ubuntu18.04下安装vscode并配置python+opencv

     进入vscode官网 https://code.visualstudio.com/ 下载完之后直接双击下载的包可以直接安装    打开vscode点击拓展然后搜索python点击安装 (我这边已经装过了) 现在打开终端(ctrl+alt+T) 输入python 不出意外会是ubuntu自带的2.7  现在pip install 安装opencv装不到python3.6解释器 现在输入ex

    2024年02月12日
    浏览(50)
  • 双系统windows+ubuntu18.04的安装和基本配置

            win+R 输入msinfo32,打开系统信息,可以看到BIOS模式为UEFI,表示 UEFI Boot 引导模式。         本文下载18.04系统 (1)制作USB启动盘工具:Rufus下载 (2)插入U盘,运行Rufus,按照下图选择          点击开始之后就会加载进度,之后关闭即可。 (3)为Ubuntu新建

    2024年02月04日
    浏览(41)
  • 如何在ubuntu18.04安装python3.8.6

    目录 一.前言 二.教程 2.1环境配置 2.2下载安装包 2.3编译安装 2.4验证安装

    2024年01月16日
    浏览(44)
  • Ubuntu20.04.5配置nfs服务器并自动挂载

    两台Ubuntu20.04.5版本的操作系统 分别当作一台服务器,一台客户机 1.服务器端(主机名我的是ceph01) 1.1安装nfs服务 apt install nfs-kernel-server 1.2 查看nfs版本 cat /proc/fs/nfsd/versions 安装完成后,NFS 服务将会自动启动,默认在Ubuntu 20.04上NFS2 被禁用,NFS3和NFS4以上可以使用。 查看NFS的版

    2024年02月06日
    浏览(63)
  • 史上最全ubuntu18.04安装教程|搜狗输入法配置教程|网络配置|相关命令配置

    获取这里给大家推荐一个CSDN最新出的工具, 猿如意 如下: 在猿如意搜索框 找到 ubuntu18.04 点击下载 ,2G需要稍等片刻,十分钟后。。。 文件下载成功 点击文件复制到合适的位置 由于下载的是镜像文件,所有需要一些小工序,下面一起看: 这里主要介绍的是ubuntu的安装,所

    2023年04月26日
    浏览(98)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包