생성된 모든 파일과 디렉터리가 해당 디렉터리의 그룹 소유자의 그룹 권한을 갖고 기본 권한이 770인 디렉터리를 원한다고 가정해 보겠습니다. posix ACL을 사용하는 것은 정말 쉽습니다.
#create a dir..
mkdir proof
#inherit group permission "video" in this example
chmod g+s proof/
chgrp video proof/
#with setfacl make the default group with rxw permissions
setfacl -d -m g:video:rwx proof
#other are not allowed
setfacl -d -m o:--- proof/
chmod o-x proof
#give the acl
setfacl -m g:video:rwx proof
이제 디렉토리 증명에 파일과 디렉토리를 만듭니다.
mkdir try1
drwxrws---+ 2 myuser video 4,0K feb 23 01:26 try1
touch file1
-rw-rw----+ 1 myuser video 0 feb 23 01:29 file1
보시다시피, 원하는 것을 얻었습니다. 디렉토리의 모든 파일은 권한을 상속하고 그룹 소유자로 "video" 그룹을 갖습니다. 이는 Linux(ext4, btrfs 등의 posix acl) 및 Solaris(ufs)에서 가능합니다.
이제 문제는 nfsv4 acl을 사용하여 Solaris에서 zfs로 이 작업을 수행하는 방법입니다. zfs Solaris 11 호스트에서 다른 디렉토리 "증명"을 만들어 보았습니다(chmod g+s가 물론 만들었습니다).
chmod A=owner@:read_attributes/read_data/execute/list_directory/read_data/write_data/append_data/execute/add_file/add_subdirectory:fd:allow,group:video:read_attributes/read_data/execute/list_directory/read_data/write_data/append_data/execute/add_file/add_subdirectory:fd:allow,everyone@:read_attributes/read_data/execute/list_directory/read_data/write_data/append_data/execute/add_file/add_subdirectory:fd:deny proof
그런데 결과는...
mkdir newdir
drwxr-sr-x+ 2 myuser video 2 23 feb 02.33 newdir
:|
동일한 posix acl을 얻는 방법은 무엇입니까? 감사해요
답변1
해결책을 찾았습니다. 사용자+그룹비디오용으로 770을 원합니다.
a) zfs 볼륨 생성
zfs create proof1
b) 매우 중요합니다. 그렇지 않으면 작동하지 않습니다!
zfs set aclinherit=passthrough rpool/proof1
c) 이제 ACL
chmod g+s /proof1
chgrp video /proof1
#this if you don't share the dir via nfs
chmod A=owner@:full_set:fd:allow,group:video:full_set:fd:allow,everyone@:full_set:fd:deny /proof1
#this if you want to share it via nfs
chmod A=owner@:full_set:fd:allow,group:video:full_set:fd:allow,everyone@:read_set:allow /proof1
fd는 파일 및 디렉터리 상속을 나타냅니다.
d) 파일과 디렉토리를 생성합니다.
mkdir dir1
touch file1
drwxrws---+ 2 root video 2 23 feb 02.59 dir1
-rwxrwx---+ 1 root video 0 23 feb 02.59 file1
완벽한. 로컬 파일로 테스트했는데 video 그룹에 속한 사용자만 해당 디렉토리에 쓸 수 있습니다.