NFS를 통해 복사할 때 ACL 기본값이 존중되지 않습니다.

NFS를 통해 복사할 때 ACL 기본값이 존중되지 않습니다.

NFS를 통해 마운트된 Ubuntu 서버에 폴더가 있는 Arch Linux 상자가 있습니다. 모든 새 파일에 권한이 설정되도록 서버의 폴더에 액세스 제어 목록을 설정했습니다 -rwx-r-x---.

user1@ubuntu:~$ getfacl home/user2/shared/
# file: home/user2/shared/
# owner: user2
# group: remoteusers
user::rwx
group::r-x
other::---
default:user::rwx
default:user:user2:rwx
default:group::r-x
default:group:remoteusers:r-x
default:mask::rwx
default:other::---

파일을 생성하면 권한이 제대로 설정됩니다.

userA@arch:~$ touch ubuntuNFS/test.txt

userA@arch:~$ ls -la ubuntuNFS
-rw-r----- 1 ########## ##########    0 Nov 13  2013 test.txt

하지만 파일을 복사하면 그룹에 어떤 권한도 부여되지 않습니다.

userA@arch:~$ cp Videos/video.mp4 ubuntuNFS/

userA@arch:~$ ls -la ubuntuNFS
-rw------- 1 ########## ##########    0 Nov 13  2013 video.mp4
-rw-r----- 1 ########## ##########    0 Nov 13  2013 test.txt

ACL 기본값이 존중 되지 않는 이유는 무엇 cp입니까?

답변1

NFS에서는 ACL이 다양한 방식으로 지원되는 경우가 가끔 있다고 생각합니다. NFS 프로젝트 웹사이트에서 이 기사를 참조하세요.

그것이 문제가 아니었다면 나는 매우 회의적이었을 것입니다 cp. cp대상 설치 유형에 관계없이 ACL을 완전히 복사하지 않는 명령에 대한 Q&A가 기억나는 것 같습니다 .

나는 이것이 U&L Q&A의 제목이라고 생각합니다:setfacl을 사용하여 그룹 구성원이 디렉터리의 모든 파일에 쓸 수 있도록 허용다음과 같은 제목의 SF Q&A로 이동합니다.cp가 ACL을 존중하지 않는 이유는 무엇입니까?.

cp아이러니하게도 우리의 @Gilles는 ACL 전파가 지원되지 않는 이유를 설명하는 SF Q&A에 대한 답변을 작성했습니다 . 나는 이것이 지금도 사실이라고 믿습니다!

에서 발췌@길스 답변

cp가 대상 파일을 생성하면 umask에 설정된 비트를 제외하고 소스 파일의 권한을 복사합니다. 이는 표준 동작입니다(예: 3.b단계 참조).단일 Unix v3(POSIX 2001) 사양.

CP는 왜 이렇게 설계되었나요? 예를 들어 원래 권한이 제한되어 있는 경우 파일의 개인 정보를 보호하고 실행 가능성을 유지하는 것이 거의 항상 옳은 일인 경우와 같이 이 동작이 바람직한 상황이 많이 있기 때문입니다. 불행하게도 GNU cp에도 이 동작을 끌 수 있는 옵션이 없습니다.

대부분의 복제 도구(예: pax, rsync)는 동일한 방식으로 작동합니다. 소스를 대상에서 분리하여(예: cat foo/baz 사용) 기본 권한으로 파일이 생성되도록 할 수 있습니다.

다음 파일을 설정하고 afile여기에 ACL을 추가했습니다.

$ touch afile
$ setfacl -m user:sam:rwx,group:users:rwx afile

현재 우리는 다음을 가지고 있습니다:

$ getfacl afile 
# file: afile
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--

이 파일을 NFSv3 공유에 복사하면 다음과 같습니다.

$ cp afile ~sam/
$ getfacl ~sam/afile 
getfacl: Removing leading '/' from absolute path names
# file: home/sam/afile
# owner: root
# group: root
user::rw-
group::rwx
other::r--

ACL이 누락되었습니다. --preserve스위치를 사용해 보세요 cp:

$ cp --preserve afile ~sam/
cp: preserving permissions for `/home/sam/afile': Operation not supported
cp: preserving ACL for `/home/sam/afile': Operation not supported

NFS에서 ACL 활성화

NFS 마운트에서 ACL을 활성화해도 효과가 없는 것 같습니다.

mulder:/export/r1/home/sam on /home/sam type nfs (rw,intr,tcp,nfsvers=3,acl,rsize=16384,wsize=16384,addr=192.168.1.1)

$ cp --preserve afile ~sam/
cp: preserving permissions for `/home/sam/afile': Operation not supported
cp: preserving ACL for `/home/sam/afile': Operation not supported

동일한 하드 드라이브가 제대로 작동합니다.

--preserve흥미롭게도 이 스위치는 동일한 EXT4 설치 드라이브에 로컬로 파일을 복사할 때 작동합니다.

$ cp --preserve afile afile2
$ getfacl afile2
# file: afile2
# owner: root
# group: root
user::rw-
user:sam:rwx
group::r--
group:users:rwx
mask::rwx
other::r--

앞으로 나아갈 길은?

내 연구 및 실험에 따르면 ACL은 NFSv4 이하에서는 지원되지 않는 것으로 보입니다. cp이 명령은 기본 파일 시스템이 지원하는 한 ACL을 보존할 수 있는 것으로 보입니다.

다음 기사를 찾았습니다.프로젝트: NFS 버전 4 오픈 소스 참조 구현, NFSv4에서 ACL 사용에 대해 설명합니다. 따라서 ACL을 NFSv4 공유에 복사하는 것이 가능하기를 바라지만 NFSv2나 NFSv3을 사용하는 것은 불가능할 것 같습니다.

인용하다

답변2

한 가지 가능한 해결책은 강제로마스크저장하다전방십자인대.

동일한 그룹 및 소유자 권한을 공유해야 하는 사용자에게 권한을 부여하고 설정합니다.SGID공유 폴더에서 그룹 공유를 허용하려면 폴더에 대한 올바른 권한을 적용하세요.

즉, 폴더를 그룹별로 공유하지 않은 것처럼 동일한 구성을 수행합니다.전방십자인대시행 중입니다.

관련 정보