ZFS로 구현된 대로 ACL은 ACL 항목의 배열로 구성됩니다. ZFS는 모든 파일에 ACL이 있는 순수 ACL 모델을 제공합니다. 일반적으로 ACL은 단순 모델로, 기존 UNIX owner/group/other 항목만 나타냅니다.
ZFS 파일에 여전히 권한 비트와 모드가 있지만, 이러한 값이 ACL의 표현을 더욱 풍부하게 만듭니다. 따라서 파일의 권한을 변경하면 그에 따라 파일의 ACL이 업데이트됩니다. 더불어, 파일/디렉토리에 사용자 액세스가 부여된 복잡한 ACL을 제거할 경우, 그룹 또는 모든 사람에 액세스가 부여된 파일/디렉토리의 권한 비트 때문에 해당 사용자가 파일/디렉토리에 계속 액세스할 수 있었습니다. 모든 액세스 제어 결정이 파일 또는 디렉토리의 ACL에 표현된 권한으로 제어됩니다.
ZFS 파일의 ACL 액세스에 대한 기본 규칙은 다음과 같습니다.
ZFS는 ACL에 나열된 순서대로, 위에서 아래로 ACL 항목을 처리합니다.
액세스 요청자와 일치하는 "사람"이 있는 ACL 항목만 처리됩니다.
일단 허용 권한이 부여된 후에는, 동일한 ACL 권한 집합에서 후속 ACL 거부 항목으로 권한을 거부할 수 없습니다.
파일 소유자는 권한이 명시적으로 거부되더라도 비조건부로 write_acl 권한이 부여됩니다. 그렇지 않으면 지정되지 않은 채 남은 권한은 거부됩니다.
거부 권한의 사례나 액세스 권한이 누락된 경우, 권한 하위 시스템이 파일 소유자 또는 수퍼유저에 대해 어떤 액세스 요청이 거부되는지 결정합니다. 이 방식 덕분에 파일 소유자가 자신의 파일이 잠기는 것을 방지하고 수퍼유저가 복구 목적으로 파일을 수정할 수 있습니다.
디렉토리에 복잡한 ACL을 설정하면 ACL이 디렉토리의 자식에 자동으로 상속되지 않습니다. 복잡한 ACL을 설정하고 디렉토리의 자식에 상속되도록 하려면 ACL 상속 플래그를 사용해야 합니다. 자세한 내용은 표 8-4 및 Verbose 형식으로 ZFS 파일에서 ACL 상속 설정을 참조하십시오.
새 파일을 만들고 umask 값에 의존하는 경우 다음과 비슷한 기본 단순 ACL이 적용됩니다.
$ ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
이 예에서 각 사용자 범주(owner@, group@, everyone@)에 ACL 항목이 있습니다.
이 파일 ACL의 설명은 다음과 같습니다.
- 0:owner@
소유자가 파일의 내용을 읽고 수정할 수 있습니다(read_data/write_data/append_data/read_xattr). 또한 소유자가 시간 표시 방식, 확장된 속성, ACL과 같은 파일 속성을 수정할 수 있습니다(write_xattr/read_attributes/write_attributes/ read_acl/write_acl). 더불어, 소유자가 파일의 소유권을 수정할 수 있습니다(write_owner:allow).
synchronize 액세스 권한은 현재 구현되지 않습니다.
- 1:group@
그룹에 파일 및 파일 속성에 대한 읽기 권한이 부여됩니다(read_data/read_xattr/read_attributes/read_acl:allow).
- 2:everyone@
사용자/그룹이 아닌 모든 사람에게 파일 및 파일 속성에 대한 읽기 권한이 부여됩니다(read_data/read_xattr/read_attributes/read_acl/synchronize:allow). synchronize 액세스 권한은 현재 구현되지 않습니다.
새 디렉토리를 만들고 umask 값에 의존하는 경우 기본 디렉토리 ACL은 다음과 비슷합니다.
$ ls -dv dir.1 drwxr-xr-x 2 root root 2 Jul 20 13:44 dir.1 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/delete_child /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
- 0:owner@
소유자가 디렉토리 내용을 읽고 수정하고(list_directory/read_data/add_file/write_data/add_subdirectory/append_data) 시간 기록, 확장 속성, ACL과 같은 파일 속성을 읽고 수정할 수 있습니다(/read_xattr/write_xattr/read_attributes/write_attributes/read_acl/write_acl). 또한 소유자는 컨텐츠를 검색(execute)하고, 파일 또는 디렉토리를 삭제(delete_child)하고, 디렉토리의 소유권을 수정(write_owner:allow)할 수 있습니다.
synchronize 액세스 권한은 현재 구현되지 않습니다.
- 1:group@
그룹이 디렉토리 내용 및 디렉토리 속성을 나열하고 읽을 수 있습니다. 더불어, 그룹에 디렉토리 내용을 검색할 수 있는 실행 권한이 있습니다(list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow).
- 2:everyone@
사용자/그룹이 아닌 모든 사람에게 디렉토리 내용 및 디렉토리 속성에 대한 읽기 및 실행 권한이 부여됩니다(list_directory/read_data/read_xattr/execute/read_attributes/read_acl/synchronize:allow). synchronize 액세스 권한은 현재 구현되지 않습니다.
참고 URL : http://docs.oracle.com/cd/E26925_01/html/E25825/gbace.html