NFS 폴더에 대한 권한을 올바르게 설정하는 방법은 무엇입니까? 장착 종료시 권한이 거부되었습니다.


46

dev 서버의 NFS 폴더에 연결하려고합니다. dev 서버의 폴더 소유자는 darren 및 group darren입니다.

디스크 유틸리티를 사용하여 Mac으로 내보내고 마운트하면 마운트되지만 폴더를 열려고 할 때 권한이 없다고 표시됩니다. rw, sync 및 no_subtree_check를 설정했습니다. Mac 사용자는 여러 그룹으로 대담합니다.

폴더에 액세스하려면 동일한 그룹과 사용자를 설정해야합니까?


2
귀하의 질문에 감사드립니다,이 스레드는 나를 위해 문제를 해결했습니다! 그러나 가장 많이 찬성 한 답변을 받아주십시오.
— mamiu

답변:


60

NFS는 RPC 인증을 기반으로 구축되었습니다. NFS 버전 3에서 가장 일반적인 인증 메커니즘은 AUTH_UNIX입니다. 클라이언트 시스템의 사용자 ID 및 그룹 ID는 각 RPC 호출에서 전송되며 액세스중인 파일에 대한 해당 ID의 권한은 서버에서 확인됩니다. 이것이 작동하려면 서버와 클라이언트에서 UID와 GID가 같아야합니다. 그러나 all_squash, anonuid 및 anongid 내보내기 옵션을 결합하여 모든 사용자가 단일 사용자 및 그룹으로 발생하도록 할 수 있습니다. all_squash 는 모든 UID 및 GID를 익명 사용자에게 매핑하고 anonuid 및 anongid 는 익명 사용자의 UID 및 GID를 설정합니다. 예를 들어, 개발자 서버의 UID와 GID가 모두 1001 인 경우 다음과 같은 줄을 사용하여 홈 디렉토리를 내보낼 수 있습니다.

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

NFS 버전 4에 익숙하지 않지만 클라이언트에서 rpc.idmapd를 설정하여 서버로 보내는 uid 및 gid를 변경할 수 있다고 생각합니다.


7
Apple OS X Yosemite nfs 문제를 해결하기 위해이 답변을 가로 질러 나갔습니다. 이 답변은 허용되는 답변보다 훨씬 관련성이 높고 정확합니다. 시스템 전체에서 UID / GID를 일치시키는 것은 바람직하지 않습니다. 시스템 A의 루트 사용자는 시스템 B의 루트 사용자가 아닐 수 있습니다.
— Allan

28

NFS를 마운트 할 때 NFS를 마운트 할 권한이 서버에있는 권한과 일치해야합니다. 예를 들어 사용자에게 읽기 전용 액세스 권한 만있는 경우 읽기-쓰기로 마운트하면 실제로 마운트를로드하려고 할 때 게시물에서 언급 한 것과 동일한 오류가 표시됩니다. 불행히도, 이것은 실제로 마운트 할 때가 아니라 폴더에 액세스 할 때만 나타납니다.

또한 사용자 NFS가 서버에서 실행되고 클라이언트의 사용자가 동일한 UID 및 GID를 사용하고 있는지 확인하려고합니다. id darren서버와 클라이언트 모두에서 실행 하여 이러한 값을 확인할 수 있습니다 . UID와 GID 값이 일치하지 않으면 편집 할 수 /etc/passwd있지만 임의로 값을 변경하기 전에 수행중인 작업을 이해해야합니다!

좋은 소스 :

이게 도움이 되길 바란다!


예, 지금 서버를 다시 실행해야하는 UID를 변경해서는 안됩니다. UID와 GID를 어떻게 모방합니까? 정말 복잡한가요?
— Darren

불행히도, 직장에서 이것을 사용하는 경험에서 NFS는 매우 취약하며 예, 이것은 복잡 할 수 있습니다. 일반적으로이 문제가 발생하지 않도록 각 서버 / 클라이언트에 특정 UID / GID가있는 전용 NFS 사용자가 필요합니다. 개발 환경에서 선택할 수있는 경우 (즉, NFS를 사용하지 않는 경우) SSHFS와 같은 것을 사용하면 개발 두통이 사라지지만 프로덕션 서버와 동일한 기능을 복제하지는 않습니다. NFS.
— 앤드류 M.

삼바가 또 다른 해결책이라고 생각하십니까? Windows에서 문제없이 사용했으며 응용 프로그램을 개발하기 위해 Mac을 사용하고 있지만 이것이 내가해야 할 길이라고 생각합니다.
— Darren

당신이 그것을 기꺼이 설정한다면 그것은 분명히 또 다른 가능성입니다.
— Andrew M.

2
NFS가 깨지기 쉽다고 망설입니다. 오랫동안 확립 된 파일 서비스 프로토콜입니다. NFS에는 실제로 클라이언트간에 UID / GID 동기화와 클라이언트와 서버간에 동기화 된 시간이라는 두 가지 요구 사항 만 있습니다. 전통적으로 NIS는 사용자 정보를 동기화하는 데 사용되었지만 LDAP는 지난 10 년 동안 새로운 배포에보다 안전한 선택입니다.
— Jeff Strunk 2012

2

UID와 GID가 두 서버에서 일치합니까? 그것은 로그인과 그룹 이름이 아닌 액세스를 제어하기 위해 사용하는 것입니다.


-2

나를 위해 _netdev클라이언트에 마운트 옵션을 제공하여 문제가 해결되었습니다 .

즉, 이것을 다음에 추가하십시오 /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.