client
역할 server
이 매우 분명한 두 대의 서버가 있습니다 . server
즉, NFS 공유를 호스팅하고 client
마운트합니다. 통화 중에도 존재하는 통화 중인 client
여러 사용자 간에 공유 그룹이 있습니다 . 공유에 대한 내 권한은 다음과 같습니다.shared
server
server
user@server $ ls -al /export/share/
drwxrwsr-x+ 3 shared shared 4096 Apr 19 01:25 .
drwxr-xr-x 3 root root 4096 Apr 12 20:10 ..
목표는 매우 명확합니다. shared
그룹의 모든 구성원이 해당 디렉터리에서 파일을 만들고, 쓰고, 삭제할 수 있기를 바랍니다. 클라이언트에서 ls -la
마운트된 디렉터리는 동일한 결과를 가져옵니다.
NFS 내보내기 파일은 server
다음과 같습니다.
/export/share 10.0.0.0/24(rw,nohide,insecure,no_subtree_check,async)
내부에 설치하면 다음과 client
같습니다 /etc/fstab
.
10.0.0.1:/export/share /mnt/share nfs _netdev,noatime,intr,auto 0 0
mount
출력 client
:
10.0.0.1:/export/share on /mnt/streams type nfs (rw,noatime,intr,vers=4,addr=10.0.0.1,clientaddr=10.0.0.2)
그러나 여전히 그룹의 사용자를 사용하여 해당 디렉터리에 파일을 만들 수 없는 것 같습니다.
예를 들어 사용자는 다음과 같습니다 jack
.
user@server $ id jack
uid=1001(jack) gid=1001(jack) groups=1001(jack),1010(shared)
설치된 폴더에 있는 파일을 터치하려고 하면 client
권한이 거부됩니다.
user@client $ sudo -u jack touch /mnt/share/a
touch: cannot touch `/mnt/share/a': Permission denied
예상대로 작동하지 않는 이유는 무엇입니까? jack
그는 이 그룹의 구성원이므로 이 폴더 내에 파일과 폴더를 만들 수 있습니까 shared
?
답변1
/etc/passwd
/etc/group에 포함된 사용자/그룹 정보를 어떻게 전파합니까 ? 일반적으로 /etc/passwd
/etc/group
이러한 마운트를 자동으로 마운트하는 모든 시스템에 파일을 동기화하려면 NIS, LDAP 또는 rsync를 사용해야 합니다 . 그렇지 않으면 클라이언트는 파일 시스템의 권한에 대해 아무것도 모릅니다.
주의 깊게 읽어보시면 좋을 것 같습니다국정원 가이드.
답변2
NFS는 이름이 아닌 실제 숫자인 "groupid"와 "userid"를 사용합니다. 그룹과 사용자가 서버와 클라이언트에서 동일한 ID를 가지고 있는지 확인하십시오. 서버와 클라이언트의 합계를 확인하세요 /etc/passwd
. /etc/group
이상적인 설정은 NIS 또는 LDAP 서버를 통해 모든 사용자와 그룹을 공유하는 것입니다.