NFS4 이해 (Linux 서버)


26

나는 리눅스에서 NFS4에 의해 약간 귀찮게했다. 일부 정보가 '외부'와 다른 정보와 충돌하는 것 같으며 다른 정보를 찾기가 어렵습니다. 그래서 여기 내 관심을 끄는 몇 가지가 있습니다. 희망을 가진 누군가가 이것에 대해 밝힐 수 있기를 바랍니다.

이 질문은 Kerberos 등이없는 NFS4에만 집중합니다.

1. 수출

exports맨 페이지에는 / etc / exports 구조에 대한 모호한 정보가 있습니다 .

인용 exports(5):

또한 각 줄에는 경로 이름 뒤에 기본 옵션에 대해 대시 ( "-")와 옵션 목록이 차례로 나오는 사양이 하나 이상있을 수 있습니다.

옵션리스트는 해당 라인의 모든 후속 내보내기에만 사용됩니다.

"해당 라인에 대한 후속 수출 만"이란 무엇입니까?

1.2 fsid=0더 이상 필요하지 않습니까?

fsid = 0이 더 이상 필요하지 않다는 linux-nfs 목록 에서 주석을 찾았을 때 fsid를 검색했습니다 . 이제 나는 혼란스러워 nfs4와 함께 필요합니까?

2. 익스포트되지 않은 디렉토리는 여전히 마운트 가능

다음과 같은 트리가 있다고 가정 해보십시오.

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

이 fstab 항목에는 다음과 같은 항목이 있습니다.

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

그리고 내 수출은 정확히 다음과 같습니다.

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

그리고 exportfs -arv보여줍니다 :

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

그렇다면 왜 내가 이것을 할 수 있고 클라이언트에서 오류가 발생하지 않습니까?

mount -t nfs4 server:/exp/users /tmp/test

/exp/users수출되지 않더라도 ? 이 디렉토리를 내 보내지 않았으며을 /dev/disk/by-label/users지정하지 않으면 내용을 볼 수 없지만 crossmnt여전히 디렉토리에 쓸 수 있습니다. 기본 디렉토리로 간다에 모든 I의 쓰기의 /exp/users한 때를 볼 수 있습니다 umount /exp/users; ls /exp/users..

3. 이상한 경우 showmount -d server

에서 언급 한대로이 rpc.mountd(8)명령은 클라이언트가 현재 마운트 한 디렉토리 또는 /var/lib/nfs/rmtab읽을 수없는 디렉토리의 항목을 표시해야합니다 .

rpc.mountd 데몬은 / var / lib / nfs / rmtab 파일에 항목을 추가하여 모든 성공적인 MNT 요청을 등록합니다. NFS 클라이언트로부터 UMNT 요청을 수신 할 때, rpc.mountd는 해당 내보내기에 대한 액세스 제어 목록이 송신자가 내보내기에 액세스 할 수 있으면 / var / lib / nfs / rmtab에서 일치하는 항목을 제거합니다.

(...)

그러나 / var / lib / nfs / rmtab의 내용이 정확하다는 보장은 거의 없습니다. UMNT를 호출 한 후에도 클라이언트가 내보내기에 계속 액세스 할 수 있습니다. 클라이언트가 UMNT 요청을 보내지 않고 재부팅하면 / var / lib / nfs / rmtab에 해당 클라이언트에 대한 오래된 항목이 남아 있습니다.

이것을 읽은 후에 나는 확실히 궁금합니다.

  1. 이러한 유형의 고객 정보 만 노출하는 것이 몹시 안전하지 않습니까?
  2. 서버 관리자가 많은 부실한 클라이언트 가있는 rmtab을 가지고 있어야한다는 사실을 알지 못합니다 .
  3. 이와 NFS4 디렉토리 마운트 고객 이유가 mount -v"장착 한 것도"GET과 같은 출력을 볼 수도 뭔가 불구 하고 장착?

나는 nfs4에 관해 다른 많은 질문을 가지고 있지만, 나는 이것을 잠시 동안 계속 유지할 것이다 .. :)


내보내기 목록은 이상한 바인드 마운트 파일 시스템을 좋아하지 않을 수 있습니다. / mnt / users로 먼저 시도해보십시오.
jirib

이것은 "의사 파일 시스템", 즉 하나의 트리 파일 시스템 계층 구조가 필요한 nfs4에 관한 것입니다. 무슨 말인지 알겠 니?
drumfire

이 위키 페이지는 FSID = 0이 더 이상 필요하지 않다는 주장 : wiki.linux-nfs.org/wiki/index.php/...을 하지만, '남자 수출'여전히이 요구되는 의미
SystemParadox

1
이 질문을지지한다고 말하고 싶습니다. 당신처럼 나는 많은 것을 똑같이 관찰했고, 같은 질문과 더 많은 것을 가지고 있습니다. 엉망인 것 같습니다.
사이클론

1
한 게시물에 너무 많은 질문이 있습니다. @ drumfire, 당신은 그것을 더 간단한 질문 게시물로 분리 할 수 ​​있습니까?
빅터 Yarema

답변:


7

좋은 질문은 문서 IMO를 통해 더 큰 요점을 강조합니다. 다음은 완전한 답변을 시도한 것입니다.

"해당 라인에 대한 후속 수출 만"이란 무엇입니까?

가장 쉬운 예는 다음과 같습니다.

/export/stuff -rw 10.0.0.54 10.0.0.55

다음과 같습니다.

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

되어 fsid=0더 이상 필요하지?

사용 사례에 따라 다릅니다. 나머지 쿼리에서 일반 디스크 기반 파일 시스템을 내보내는 것처럼 보입니다.이 경우 fsid=0nfsv4에서 내보내기의 루트 파일 시스템을 참조하는 동작을 변경하는 것이 가장 좋습니다 .

이 동작을 변경하려면 no_subtree_check 옵션을 제거하십시오


rmtab관련 물건

  • rmtab보안 위험을 처리 합니까?
    내 네트워크에서 신뢰할 수있는 정보 유출이 없지만 잠재적으로 가능한 경우를 볼 수 있다는 유스 케이스에 달려 있다고 생각합니다.
  • rmtab오래된 항목으로 가득 차 있지 않습니까?
    배포 시나리오 / 사용 사례에 따라 다시 예입니다.
  • 이것이 일부 클라이언트 mount -v가 "아무것도 마운트되지 않았다"고 잘못 보는 이유 입니까?
    아직 이걸 보지 못했어요
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.