NFS 서버 측:
[USER@NFSSERVER ~]$ cat /etc/exports
/var/foo/logs 10.75.16.4(ro,sync)
/var/foobar 10.100.102.0/24(rw,sync)
[USER@NFSSERVER ~]$
NFS 클라이언트:
[root@NFSCLIENT ~]# grep nfs /etc/fstab
10.100.102.34:/var/foobar /var/foobar nfs auto 0 0
[root@NFSCLIENT ~]#
NFS 클라이언트는 10.100.102.0/24에 있습니다.
다른 NFS 클라이언트는 이 디렉터리에 쓸 수 있습니다.
질문:
[root@NFSCLIENT foobar]# touch testing
touch: cannot touch `testing': Permission denied
[root@NFSCLIENT foobar]#
질문: 왜 우리는 글을 쓸 권한이 없나요? FS는 RW로 설치되며 둘 다 RHEL 6 및 NFSv4입니다.
답변1
이 옵션 없이 파일 시스템을 내보내면 no_root_squash
루트 사용자 ID가 서버측에서 "anonymous" 또는 "nobody"로 매핑됩니다. 이는 쓰기 권한을 효과적으로 거부합니다. 이는 NFS 마운트를 통한 SUID 유형의 공격으로부터 보호하기 위한 상식적인 기본값이지만, 익숙하지 않은 사람들에게는 이러한 문제가 발생할 수 있습니다. 일반적으로 루트가 아닌 사용자(UID != 0)로 NF 마운트에 액세스할 수 있습니다. 또는 서버에서 다시 내보내고 클라이언트에 다시 마운트하여 마운트된 파일 시스템에 쓸 수 있는 권한을 얻는 옵션을 추가할 수 no_root_squash
있습니다 /etc/exports
. 클라이언트 루트에서와 마찬가지로.