"ls"는 마운트된 NFS 폴더에 파일을 표시하지 않지만 "cd"는 작동합니다.

"ls"는 마운트된 NFS 폴더에 파일을 표시하지 않지만 "cd"는 작동합니다.

NFS 공유가 /vol/mynfsLinux 클라이언트에 마운트되었습니다. 폴더가 표시되지 않으며 lsbash 완료도 작동하지 않습니다 /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다음을 실행하여 이 문제를 해결할 수 있습니다( 폴더를 소유하지 않은 경우 루트/사용해야 할 수 있음 ).

chmod u+r /vol/mynfs/.

해당 폴더의 사용자에게 읽기 권한이 추가됩니다.

/.심볼릭 링크라면 명령에 추가 항목이 필요할 수도 있습니다.

답변3

저도 이 경우를 시도해 봤습니다.

솔루션 1

제 경우에는 QNAP NAS 서버를 사용하고 있습니다.

내 NAS 공유 폴더 이름은 'mynfs'입니다.

QNAP NAS 서버 및 chmod 750 mynfs에 ssh

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에 나타납니다.

관련 정보