「ls」ではマウントされたNFSフォルダにファイルは表示されませんが、「cd」は機能します

「ls」ではマウントされたNFSフォルダにファイルは表示されませんが、「cd」は機能します

NFS 共有が/vol/mynfsLinux クライアントにマウントされました。フォルダーは表示されず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/use になる必要がある場合があります)。

chmod u+r /vol/mynfs/.

これにより、そのフォルダーに対するユーザーの読み取り権限が追加されます。

シンボリックリンクの場合は、コマンドに追加のもの/.が必要になる可能性がありますが、わかりません。

答え3

私もこのケースを試してみました。

解決策1

私の場合は、QNAP NAS サーバーを使用しています。

私のNAS共有フォルダ名は「mynfs」です

QNAP NASサーバーにsshで接続し、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 を変更し、/vol/mynfs を再度マウントすると、ファイルが /vol/mynfs に表示されます。

関連情報