NFSv4 fsid=0을 사용하고 NFS 루트를 전체 LAN으로 내보내거나 내보내지 않을 때의 영향

NFSv4 fsid=0을 사용하고 NFS 루트를 전체 LAN으로 내보내거나 내보내지 않을 때의 영향

NFSv4 튜토리얼에서는 다음과 같이 공유 루트를 전체 서브넷으로 내보내라는 제안을 자주 볼 수 있습니다.이것아치 위키에서:

/etc/export:

/srv/nfs        192.168.1.0/24(rw,sync,crossmnt,fsid=0,no_subtree_check)
/srv/nfs/music  192.168.1.0/24(rw,sync,no_subtree_check)
/srv/nfs/public 192.168.1.0/24(ro,all_squash,insecure,no_subtree_check) desktop(rw,sync,all_squash,anonuid=99,anongid=99,no_subtree_check)

더 안전할까요?아니요첫 번째 줄이 있습니까? (내 질문에서 "첫 번째 줄"을 언급할 때 위 코드 조각의 첫 번째 내보내기 줄을 언급하고 있습니다.)

NFSv4의 경우 fsid=0은 선택 사항이며 이는 주로 경로를 단축하기 위한 것으로 보입니다(/srv/nfs를 /로 변환하여). 예비 테스트에서는 /srv/nfs를 사용하는 한 첫 번째 줄 없이 내보내기가 제대로 작동합니다. 첫 번째 행이 제공하는 중요한 기능은 무엇입니까?

또한 바인드 마운트가 하나 이상 더 있다는 것을 알고 있는 경우 이 예를 고려하고 싶습니다.

/srv/nfs/projects

('프로젝트'의 내용은 음원 묶음 설치 내용과 다르고 민감한 내용임을 전제로 합니다.)

위에 작성된 첫 번째 내보내기 라인은 특히 crossmnt 및 no_subtree_check를 사용할 때 LAN의 모든 클라이언트가 내보낸 파일 시스템 전체에 액세스할 수 있도록 하는 것으로 나타납니다. 소유자 및 그룹 권한을 무시하라고 제안하는 것은 아니지만 첫 번째 줄 없이도 내보내기가 제대로 작동할 것이며 /srv/nfs 아래의 다른 바인드 마운트(예: /srv/nfs/projects)가 불필요하게 전체 서브넷에 열리지 않을 것이라고 생각합니다. , 소유자 및 그룹 권한에 대한 감독 가능성이 노출됩니다.

물론, 이와 유사한 내보내기를 추가하여 "프로젝트"를 올바르게 공유할 수 있습니다.

/etc/export:

/srv/nfs/projects 192.168.1.123(rw,sync,root_squash,subtree_check)

이 새로운 라인은 첫 번째 라인의 영향을 받나요? 첫 번째 출구 라인에 중요한 역할이 보이지 않습니다.

그 줄이 있으면도움이나 권장 사항이 있습니까? 이것이 현명한가요?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)

다음번의 보다 구체적인 내보내기가 이 내보내기를 재정의한다는 것이 맞습니까? 예를 들어, 첫 번째 줄이 ro로 변경되고 더 제한적이 되더라도(아래 예와 같이) 다음 줄은 "Music"에 대한 rw 액세스 권한을 올바르게 부여합니까?

/srv/nfs        192.168.1.0/24(ro,sync,fsid=0,subtree_check,all_squash)
/srv/nfs/music  192.168.1.2(rw,sync,no_subtree_check)

수출 품목을 나열할 때 순서가 중요합니까? 우선순위는 어떻게 결정되나요? 보다 구체적인 주소(예: 192.168.1.2)가 보다 일반적인 주소(192.168.1.0/24)보다 우선 적용됩니까?

참고: 이 질문에는 단일 주제가 있으므로 이를 명확하게 하기 위해 더 나은 제목을 사용할 수 있지만 지금까지 올바른 제목을 찾지 못했습니다. 편집자 여러분을 환영합니다.

답변1

이것내보낸 매뉴얼 페이지fsid매개변수 에 대해 이야기해 보겠습니다.

NFS는 내보내는 모든 파일 시스템을 식별할 수 있어야 합니다. 일반적으로 파일 시스템의 UUID(파일 시스템에 그런 것이 있는 경우) 또는 파일 시스템을 보유하는 장치의 장치 번호(파일 시스템이 장치에 저장된 경우)를 사용합니다.

모든 파일 시스템이 장치에 저장되는 것은 아니며 모든 파일 시스템에 UUID가 있는 것은 아니기 때문에 NFS에 파일 시스템 식별 방법을 명시적으로 알려야 하는 경우가 있습니다. 이는 fsid=옵션을 통해 수행됩니다.

이제 이 매개변수가 때때로 필요한 이유를 알았으므로 fsid매뉴얼 페이지에서 NFSv4에 대해 설명하는 내용을 살펴보겠습니다(이 부분은 이전 버전과 상당히 다릅니다).

NFSv4의 경우 내보낸 모든 파일 시스템의 루트인 고유한 파일 시스템이 있습니다. 이는 지정된 것과 완전히 동일하거나 둘 다 의미 fsid=root합니다 fsid=0.

즉, NFSv4의 경우 예제의 첫 번째 줄은 서버에서 특정 클라이언트로 내보낸 모든 디렉터리가 위치하는 기준점을 정의합니다. 언뜻 보면 이는 모든 디렉터리를 내보낼 수 있는 NFSv3의 유연성에 비해 한 단계 뒤처진 것처럼 들립니다. 그러나 이미 다른 곳에 설치된 디렉토리를 이 디렉토리에 쉽게 배치할 수 있습니다. 이렇게 한 줄만 추가하면 된다/etc/fstab

/path/to/music/dir /srv/nfs/music none rbind 0 0

mount -a새 파일 시스템을 마운트하려면 실행하세요 . 새로운 접근 방식은 본질적으로 의사 루트 파일 시스템 역할을 하여 클라이언트가 해당 디렉터리 외부의 데이터에 액세스하는 것을 방지하고 NFS 서버가 클라이언트에 파일 액세스 권한을 부여해야 하는지 여부를 쉽게 확인할 수 있도록 하여 복잡성을 줄이면서 보안을 강화합니다.

관련 정보