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를 익명 사용자에게 매핑하고 anonuidanongid 는 익명 사용자의 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.