NFS 挂载文件夹,但没有文件

NFS 挂载文件夹,但没有文件

我在使用 NFSv4 安装时无法显示文件

Server: Ubuntu 20.04, 192.168.1.1
Client: Ubuntu 18.04, 192.168.1.2

在服务器上,我有一个文件夹和文件

/home/server/files/myfile.pdf

(请注意,“服务器”用作用户帐户名)。以下是原始文件的完整所有权和权限链:

drwxr-xr-x  root:root        /
drwxr-xr-x  root:root        /home/
drwxr-xr-x  server:server    /home/server/
drwxrwxr-x  server:nfsgroup  /home/server/files/
-rwxrwxrwx  server:nfsgroup  /home/server/files/myfile.pdf

在这里您可以看到我创建的实用程序“用户”:“组”的示例:

nfsuser  uid=127
nfsgroup gid=134

“nfsuser”和“server”都属于“nfsgroup”组。

在服务器上,我已将/files/目录绑定到/srv/nfs4/files//etc/fstab其中包含一个条目

/home/server/files    /srv/nfs4/files    none    bind    0    0

这是成功的,我可以清楚地看到/srv/nfs4/files/myfile.pdf文件

-rwxrwxrwx  server:nfsgroup  /srv/nfs4/files/myfile.pdf

以下是已安装和服务文件的完整所有权和权限链:

drwxr-xr-x  root:root        /
drwxr-xr-x  root:root        /srv/
drwxrwxr-x  server:nfsgroup  /srv/nfs4/
drwxrwxr-x  server:nfsgroup  /srv/nfs4/files/
-rwxrwxrwx  server:nfsgroup  /srv/nfs4/files/myfile.pdf

/srv/nfs4/现在,我想将包含 bind-mounted 的整个目录导出files/到客户端。我在服务器中有以下条目/etc/exports

/srv/nfs4    192.168.1.2(rw,sync,fsid=0,root_squash,all_squash,anonuid=127,anongid=134,no_subtree_check)

特别注意,该all_squash,anonuid=127,anongid=134设置组导致客户端用户“client”在权限方面被识别为“nfsgroup”中的“nfsuser”。

使用 导出它之后,我使用 命令$ sudo exportfs -ra将其挂载到客户端的根级目录。/nsffiles/$ sudo mount -t nfs 192.168.1.1:/srv/nfs4 /nsffiles

结果是我可以看到客户端上的导出files/目录。但是,我看不到其内容:/nsffiles/

$ ls -Alhd /nsffiles/
drwxrwxr-x 8 client 134 4.0K Nov 14 20:37 /nsffiles/

$ ls -Alhd /nsffiles/files/
drwxr-xr-x 2 root root 4.0K Nov 14 20:36 /nsffiles/files/

$ ls -Alh /nsffiles/files/
total 0

NFS 客户端能够看到files/目录这一事实表明我的 NFS 服务或本地网络没有根本问题。没有防火墙问题,我不需要安装任何其他软件包。此外,我之前在略有不同的文件夹结构下(例如,files/在 home 之外的目录中)可以完美地安装 NFS,因此我知道在这方面基本没有问题。

我认为现在无法正常工作的最可能原因是以前的设置和当前设置之间存在细微的所有权/权限变化。特别是,挂载的目录是

server side:    `/srv/nfs4/`    drwxrwxr-x  server:nfsgroup
client side:    `/nsffiles/`    drwxrwxr-x  client:134

包含的目录是

server side:    `/srv/nfs4/files/`    drwxrwxr-x  server:nfsgroup
client side:    `/nsffiles/files/`    drwxr-xr-x  root:root

也就是说,对于已挂载的目录,权限将转换为server:nfsgroup -> client:134,这是预期的。但是,所包含目录的权限将转换为server:nfsgroup -> root:root。为什么root:root而不是client:134

此 ServerFault问题听起来很相似,但它涉及 Windows,而且我不能说唯一的答案是否适用。

这个Unix.SE问题涉及 Windows/Linux 设置的 NFS 文件权限;我可以从中收集到的所有信息都是我已经知道并且认为我已经处理过的事情。

请仅在您知道自己在说什么的情况下做出回应。如果您忍不住要发表胡乱猜测,请将其标识为胡乱猜测。或者,您知道,提供足够的信息,让您的读者能够分辨出差异。

相关内容