Debian/Ubuntu Linux:设置NFSv4文件服务器

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

如何使用基于主机的身份验证在Debian或者Ubuntu Linux服务器操作系统下安装和配置NFS版本4服务器?
您需要在Debian/Ubuntu Linux服务器上安装以下软件包:

  • nfs-kernel-server:Linux内核NFS版本3和4服务器。
  • portmap:RPC端口映射器。
  • nfs-common:客户端和服务器通用的NFS支持文件。它还包括以下库:
  • liblockfile1NFS安全锁定库,包括dotlockfile程序。
  • libnfsidmap2一个nfs idmapping库。

步骤1:安装NFSv4服务器

打开命令行终端(选择应用程序>附件>终端),然后执行以下命令。
您也可以使用ssh命令登录。
出现提示时,通过执行su并输入root密码来切换到root用户。
输入命令apt-get update && apt-get upgrade来告诉apt通过查询已配置的存储库来刷新其软件包信息,然后升级整个系统:

# apt-get update && apt-get upgrade

执行以下命令以安装NFSv4服务器软件包,执行:

# apt-get install nfs-kernel-server portmap nfs-common

步骤2:配置端口映射

编辑/etc/default/portmap,执行:

# vi /etc/default/portmap

确保按以下方式设置选项,以便它可以接受来自您局域网的网络连接:

OPTIONS=""

保存并关闭文件。
编辑/etc/hosts.allow并添加允许使用portmap访问系统的主机列表(IP地址或者子网),执行:

# vi /etc/hosts.allow

在此示例中,允许192.168.1.0/24访问端口映射:

portmap: 192.168.1.

保存并关闭文件。

TCP Wrapper是基于主机的联网ACL系统,用于过滤对基于Internet和/或者LAN的系统的网络访问。

步骤3:配置idmapd

rpc.idmapd是NFSv4 ID名称映射守护程序。
它向NFSv4内核客户端和服务器提供功能,通过将用户ID和组ID转换为名称(反之亦然)来通过上调用与之通信。
编辑/etc/default/nfs-common,执行:

# vi /etc/default/nfs-common

根据需要为NFSv4启动idmapd守护程序:

NEED_IDMAPD=YES

保存并关闭文件。
缺省的/etc/idmapd.conf文件如下:

# cat /etc/idmapd.conf

输出示例:

[General]
 
Verbosity = 0
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain
 
[Mapping]
 
Nobody-User = nobody
Nobody-Group = nogroup

我将使用默认值。
但是,您可以根据设置配置映射。
有关更多信息,请参见idmapd.conf(5)手册页。

步骤4:配置NFS

首先,使用mkdir命令创建目录,执行:

# mkdir /exports

编辑/etc/exports文件并设置导出到NFS客户端的文件系统的访问控制列表,执行:

# vi /etc/exports

追加以下配置,执行:

/exports   192.168.1.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)

保存并关闭文件。
其中:

  • /exports:/exports是目录,它被设置为yourpseudofilesystem的显式导出根。您可以使用mount命令在该卷下挂载其他卷。请参阅下面的详细信息。
  • 192.168.1.0/255.255.255.0:您正在将目录同时导出到IP子网上的所有主机192.168.1.0/24。仅允许192.168.1.0/24中的客户端访问我们的NFSv4服务器。
  • rw:允许用户在此NFS卷上读写请求。
  • no_root_squash:关闭根压缩。此选项主要对无盘客户端有用。
  • no_subtree_check:此选项禁用子树检查,这对安全性有轻微影响。通常在根目录下导出并且可能会看到许多文件重命名的主目录文件系统,应在禁用子树检查的情况下导出。
  • crossmnt:此选项类似于nohide,但它使客户端可以从标有crossmnt的文件系统移动到安装在其上的导出文件系统。因此,当将子文件系统B安装在父A上时,在A上设置crossmnt与在B上设置nohide具有相同的效果。
  • fsid = 0:NFS服务器需要能够识别它导出的每个文件系统。对于NFSv4服务器,有一个专有的文件系统,它是所有导出文件系统的根。这是用fsid = root或者fsid = 0指定的,这两者的含义完全相同。

关于/export伪文件系统的注释

/exports充当导出的伪文件系统的根。
您需要在此目录下挂载所有必需的文件系统。
例如,您可以使用mkdir命令按以下方式共享/exports下的/home,/sales,/usr目录:

# cd /exports
# mkdir {home,sales,data,usr}

现在,您可以使用mount命令来绑定目录,如下所示:

# cd /exports
# mount --bind /home data
# mount --bind /usr home
# mount --bind /data data
# mount --bind /sales sales

更新/etc/fstab以自动绑定文件系统,执行:

# vi /etc/fstab

更新文件如下:

/home /exports/data    none bind
/usr /exports/home     none bind
/data /exports/data    none bind
/sales /exports/sales   none bind

保存并关闭文件。
确保所有服务都在运行:

# /etc/init.d/portmap restart
# /etc/init.d/nfs-common restart
# /etc/init.d/nfs-kernel-server restart

步骤5:客户端配置

您需要在运行Debian或者Ubuntu Linux桌面的客户端计算机上安装nfs-common和portmap软件包:

# apt-get install nfs-common portmap

确保这两个服务正在运行:

# /etc/init.d/nfs-common start
# /etc/init.d/portmap start

如何查看从客户端计算机导出的目录?

执行以下命令:

$ showmount -e 192.168.1.10
$ showmount -e server2

其中,192.168.1.10是NFSv4服务器IP地址。

如何从客户端计算机挂载目录?

输入以下命令,执行:

# mkdir /data

要安装整个/exports,请执行:

# mount.nfs4 192.168.1.4:/ /data

仅挂载/exports/data,执行:

# mount.nfs4 192.168.1.4:/data /data

我建议将以下选项传递给mount命令:

# mount.nfs4 192.168.1.10:/ /nfs -o soft,intr,rsize=8192,wsize=8192

有关更多信息,请参见mount.nfs4手册页。

如何使用/etc/fstab文件自动挂载目录?

您可以使用/etc/fstab挂载NFS文件系统,执行:

# vi /etc/fstab

追加条目,执行:

192.168.1.10:/data /data nfs4 soft,intr,rsize=8192,wsize=8192

保存并关闭文件。

基于Kerberos的身份验证

如果您不想使用基于主机的身份验证,则可以改用基于Kerberos的身份验证。
在本系列的下一部分中,我将讨论在Debian操作系统下运行的NFSv4客户端和服务器的基于Kerberos的身份验证。