NFS 마운트에서 ACL을 방지하는 방법은 무엇입니까?

NFS 마운트에서 ACL을 방지하는 방법은 무엇입니까?

ACL이 전혀 없는 NFS 볼륨(POSIX 또는 NFS 볼륨)을 내보내거나 마운트하려고 하는데 실패합니다.

기술적인 맥락: 양쪽의 최신 데비안, ext4 볼륨.

목표: 서버에서 POSIX ACL을 사용하여 엄격한 액세스를 시행하고 사용자는 NFS를 사용하여 다른 시스템의 볼륨에 액세스할 수 있습니다. 그러나 디렉터리/파일을 소유한 모든 사용자는 ACL을 변경할 수 있는데 이는 여기서는 좋지 않습니다. 따라서 사용자가 ACL을 변경하는 것을 방지하고 싶습니다. 단순히 get/setfacl 명령을 제거하는 것은 좋은 방법이 아닙니다. 서버 측 볼륨에서 ACL 지원을 제거하는 것은 좋지 않습니다…

그래서 내 질문은:서버 측 볼륨에서 ACL을 제거하지 않고 NFS 마운트에서 ACL을 방지할 수 있습니까? 그렇다면 어떻게 수행할 수 있습니까?

no_acl / noacl을 사용하여 테스트했지만 성공하지 못했습니다. 내 내보내기는 "no_acl" 옵션을 사용하여 NFSv3 버전에서 수행되었습니다. /etc/exports에서:

/exports ip-of-client-during-tests(rw,sync,no_acl,no_subtree_check,fsid=0)
/exports/data ip-of-client-during-tests(rw,sync,no_acl,no_subtree_check)

모든 서비스가 다시 로드/다시 시작되었습니다. 그런 다음 "noacl" 옵션을 사용하여 클라이언트에 마운트합니다.

mount -t nfs -o noacl,vers=3 my-server:/exports/data/ /var/data/

이는 /proc/mounts에 제공됩니다:

server-name:/exports/data/ /var/data nfs rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,noacl,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=server-ip,mountvers=3,mountport=53844,mountproto=udp,local_lock=none,addr=server-ip 0 0

그리고 클라이언트에서 내가 소유한 디렉토리/파일에 대해 get/setfacl을 사용하여 ACL을 가져오거나 설정할 수 있으며 변경 사항은 서버 파일 시스템에 표시됩니다. 또한 NFSv4를 사용해 보았으나 아무런 변화가 없었습니다. 그런데 서버에서는 /proc/fs/nfs/exports에 "no_acl" 옵션이 표시되지 않습니다.

/exports/data   client-ip(rw,root_squash,sync,wdelay,no_subtree_check,uuid=0bac8439:e7e2488e:817358d2:f2c94b85,sec=1)

importfs -v로 볼 수 있더라도:

/exports/data   client-ip(rw,wdelay,root_squash,no_subtree_check,no_acl,sec=sys,rw,root_squash,no_all_squash)

답변1

옵션 없이 커널을 컴파일하여 서버측 지원을 비활성화할 수 있습니다 CONFIG_NFSD_V3_ACL.

관련 정보