“ls” 显示已挂载的 NFS 文件夹中没有文件,但“cd”可以工作

“ls” 显示已挂载的 NFS 文件夹中没有文件,但“cd”可以工作

在 Linux 客户端上安装了 NFS 共享/vol/mynfs。它不显示任何文件夹,ls并且 bash 补全也不起作用/vol/mynfs。但更改到子目录后,所有文件都可见。

$ ls /vol/mynfs
total 0
$ cd /vol/mynfs/test
$ ls  # shows all files as expected now.

为什么文件首先是不可见的,我怎样才能使它们始终可见?

答案1

我假设您的 NFS 共享是自动安装的,是吗?

在实际挂载共享之前,/vol/mynfs它只是一个空目录,因此ls显示为空目录。移动到该目录会强制挂载实际发生,因此之后ls会显示现在已挂载目录的内容。

只要共享确实已挂载,文件就可以列出。如果随后卸载共享(手动或自动,在不活动超时后),目录将再次显示为空。

如果由于某种原因您需要这样做,则类似操作(cd /vol/mynfs; ls)将强制安装并执行。ls

答案2

确保您对该目录具有读取权限。
尝试ls -la /vol/mynfs/.查看 的输出.,您的用户或组是否具有读取权限?
您可以学习读取权限这里

如果您具有执行权限但没有读取权限,您将能够打开该文件夹及其子目录,但无法列出它们(您的确切问题)。来源
sudo您可以通过运行修复此问题(如果您不拥有该文件夹,则 可能需要以 root 身份使用);

chmod u+r /vol/mynfs/.

这将为用户添加该文件夹的读取权限。

/.如果它是一个符号链接,则可能需要命令中的额外内容,我不知道。

答案3

我也审理过这个案件。

解决方案 1

就我而言,我正在使用 QNAP NAS 服务器。

我的 NAS 共享文件夹名称是“mynfs”

ssh 到 QNAP NAS 服务器并 chmod 750 mynfs

chmod 750 /share/NFSv=4/mynfs

在 NFS 服务器端 chmod 设置之后,我的客户端 nfs 现在可以显示所有文件和目录。

解决方案 2

此解决方案是修改客户端 /etc/fstab。下面的示例,10.0.0.254 是我的 QNAP NAS 服务器。

10.0.0.254:/mynfs     /vol/mynfs     nfs     defaults        0       0

修改为

10.0.0.254:/mynfs    /vol/mynfs     nfs     relatime,vers=4.1,rsize=32768,wsize=32768,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,local_lock=none  0       0

修改完/etc/fstab后,重新mount /vol/mynfs,文件就出现在/vol/mynfs中了。

相关内容