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

여기서는 내가 만든 'user':'group' 유틸리티의 예를 볼 수 있습니다.

nfsuser  uid=127
nfsgroup gid=134

'nfsuser'와 'server'는 모두 'nfsgroup' 그룹에 있습니다.

서버에는 항목과 함께 in /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/이제 바인드 마운트가 포함된 전체 디렉토리를 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 서비스나 로컬 네트워크에 근본적으로 문제가 없음을 나타냅니다. 방화벽 문제가 없으며 추가 패키지를 설치할 필요도 없습니다. 또한 이전에는 NFS 마운트가 약간 다른 폴더 구조( files/예를 들어 집 외부의 디렉터리에 있음)에서 완벽하게 작동했기 때문에 그 점에 있어서 기본 사항은 괜찮다는 것을 알고 있습니다.

지금 작동하지 않는 가장 큰 원인은 이전 설정과 현재 설정 간의 미묘한 소유권/권한 변경이라고 가정합니다. 특히, 마운트된 디렉토리는

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:rootclient:134

이 서버 오류질문비슷하게 들리지만 이는 Windows에 관한 것이므로 유일한 대답이 적용된다고 말할 수는 없습니다.

이 Unix.SE질문Windows/Linux 설정에 대한 NFS 파일 권한과 관련됩니다. 내가 얻을 수 있는 모든 정보는 내가 이미 알고 있고 내가 처리했다고 생각하는 것들입니다.

무슨 말인지 아시는 분만 답변 부탁드립니다. 터무니없는 추측을 게시하는 것을 거부할 수 없다면, 그것이 터무니없는 추측임을 밝혀주세요. 아니면 독자가 차이점을 알 수 있을 만큼 충분한 정보를 제공하세요.

관련 정보