한 시스템에서 루팅 할 수없는 이유는 다른 시스템에서 마운트 된 nfs 컨텐츠를 변경할 수없는 이유는 무엇입니까?


14

내 NFS 서버에서 다음 내보내기를 정의했습니다.

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

내 NFS 클라이언트에서 :

192.168.1.7:/shared /shared nfs rw 0 0

분명히 서버의 루트로 원하는 것을 할 수 있습니다. 그러나 클라이언트에서 내 일반 사용자 'gabe'는 nfs 마운트를 변경할 수 있지만 (권한이 있다고 가정) 루트는 할 수 없습니다.

일반 사용자로서 :

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

루트로 :

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

다시 말하지만, 이것은 모두 NFS 클라이언트 측면에 있으며, 아마도 -maproot 옵션과 관련이 있다고 생각합니다. 이것이 NFS를 처음 설정하는 때이며이 특성을 알게되었습니다. 나는 이것을 읽을 수 있는지 알아보기 위해 지금 약간의 독서를 할 것입니다. 그러나 누군가 통찰력이 있다면, 나는 그것을 감사하겠습니다.

답변:


18

NFS는 네트워크의 모든 시스템에서 사용자 및 그룹 ID가 동일하다는 개념으로 설계되었습니다. 일반 사용자에게는 정상적으로 작동합니다. 그러나 루트의 UID는 항상 0이며 하나의 상자에 루트가 있다고해서 네트워크의 모든 시스템에 루트 액세스 권한이 있어야한다는 의미는 아닙니다.

따라서 NFS는 루트를 특별하게 취급합니다. 기본적으로 root는 nobody일반적으로 쓰기 액세스 권한이없는 사용자 에게 매핑됩니다 . 이 -maproot옵션을 사용하면 루트 처리 방법을 변경할 수 있습니다. BSD -maproot=root는 Linux의 no_root_squash옵션에 해당합니다 .


네 확실합니다. 이것은 내 문제를 해결했습니다. 내가 읽고있는 맨 페이지는 정확히 maproot가 한 일과 관련하여 약간 비밀 스럽거나 이해했습니다. 감사!
개브.

또 다른 멍청한 놈. NFS 드라이브에 -maproot액세스하지 않고 NFS 드라이브가 옵션 을 사용하도록 구성되었는지 알 수있는 방법을 알고 있는지 궁금합니다 .
John

@ 존, 그것은 의견을 추가하는 대신 새로운 질문을해야 할 정도로 다릅니다.
CJM

5

전통적인 NFS 구현에서 일반적인 동작입니다. NFS 사용자 매핑은 컨텍스트와 상관없이 수행되므로 클라이언트 루트의 모든 액세스는 특정 사용자 (일반적 nobody으로 기본)에 매핑되어야합니다 . 따라서 클라이언트 루트는 파일에 직접 액세스 할 수 없지만 액세스 할 수있는이 이상한 동작 su gabe입니다.

NFS의“최근”버전 (예 : NFSv4 및 아마도 NFSv3)은 양쪽에서 모두 지원되는 경우 더 건전한 동작을 허용하지만 자세한 내용은 모릅니다.

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