Oracle® Solaris 11.2의 ZFS 파일 시스템 관리

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

Verbose 형식으로 ZFS 파일에서 ACL 상속 설정

파일 및 디렉토리에 ACL을 상속하거나 상속하지 않는 방법을 결정할 수 있습니다. 기본적으로 ACL은 전파되지 않습니다. 디렉토리에 복잡한 ACL을 설정하면 ACL이 후속 디렉토리에서 상속되지 않습니다. 파일 또는 디렉토리에 ACL의 상속을 지정해야 합니다.

aclinherit 등록 정보는 파일 시스템에 전역적으로 설정할 수 있습니다. 기본적으로 aclinherit는 restricted로 설정됩니다.

자세한 내용은 ACL 상속을 참조하십시오.

예 7-6  기본 ACL 상속 부여

기본적으로 ACL은 디렉토리 구조를 통해 전파되지 않습니다.

다음 예에서 read_data/write_data/execute의 복잡한 ACE가 test.dir의 사용자 joe에 적용됩니다.

# chmod A+user:joe:read_data/write_data/execute:allow test.dir
# ls -dv test.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:53 test.dir
0:user:joe:list_directory/read_data/add_file/write_data/execute:allow
1: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
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

test.dir 하위 디렉토리를 만들 경우 사용자 joe에 대한 ACE가 전파되지 않습니다. 사용자 joe는 자신에게 부여된 sub.dir 권한이 파일 소유자, 그룹 구성원 또는 everyone@으로 액세스하는 경우 sub.dir에만 액세스할 수 있습니다.

# mkdir test.dir/sub.dir
# ls -dv test.dir/sub.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:54 test.dir/sub.dir
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
예 7-7  파일 및 디렉토리에 ACL 상속 부여

다음 일련의 예는 file_inherit 플래그를 설정할 때 적용되는 파일 및 디렉토리 ACE를 식별합니다.

다음 예에서 사용자 joe에 대해 test2.dir 디렉토리의 파일에 대한 read_data/write_data 권한이 추가되므로 이 사용자가 새로 만든 파일에 읽기 액세스할 수 있습니다.

# chmod A+user:joe:read_data/write_data:file_inherit:allow test2.dir
# ls -dv test2.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:55 test2.dir
0:user:joe:read_data/write_data:file_inherit:allow
1: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
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

다음 예에서 사용자 joe의 권한이 새로 만든 test2.dir/file.2 파일에 적용됩니다. 부여된 ACL 상속 read_data:file_inherit:allow로 인해 사용자 joe가 새로 만든 파일의 내용을 읽을 수 있습니다.

# touch test2.dir/file.2
# ls -v test2.dir/file.2
-rw-r--r--+  1 root     root           0 Jul 20 14:56 test2.dir/file.2
0:user:joe:read_data:inherited:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

이 파일 시스템에 대한 aclinherit 등록 정보가 기본 모드 restricted로 설정되므로 사용자 joefile.2에 대한 write_data 권한이 없습니다(파일의 그룹 권한이 허용하지 않음).

file_inherit 또는 dir_inherit 플래그를 설정할 때 적용되는 inherit_only 권한을 사용하여 디렉토리 구조를 통해 ACL을 전파할 수 있습니다. 따라서 사용자 joe는 파일 소유자이거나 파일 그룹 소유자의 구성원이 아닌 한, everyone@에서만 권한이 부여되거나 거부됩니다. 예를 들면 다음과 같습니다.

# mkdir test2.dir/subdir.2
# ls -dv test2.dir/subdir.2
drwxr-xr-x+  2 root     root           2 Jul 20 14:57 test2.dir/subdir.2
0:user:joe:list_directory/read_data/add_file/write_data:file_inherit
/inherit_only/inherited:allow
1: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
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

다음 일련의 예는 file_inheritdir_inherit 플래그를 설정할 때 적용되는 파일 및 디렉토리 ACL을 식별합니다.

다음 예에서 사용자 joe에 대해 새로 만든 파일/디렉토리에 상속되는 읽기, 쓰기, 실행 권한이 부여됩니다.

# chmod A+user:joe:read_data/write_data/execute:file_inherit/dir_inherit:allow
test3.dir
# ls -dv test3.dir
drwxr-xr-x+  2 root     root           2 Jul 20 15:00 test3.dir
0:user:joe:list_directory/read_data/add_file/write_data/execute
:file_inherit/dir_inherit:allow
1: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
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

아래 출력에서 inherited 텍스트는 ACE가 상속되었음을 나타내는 정보 메시지입니다.

# touch test3.dir/file.3
# ls -v test3.dir/file.3
-rw-r--r--+  1 root     root           0 Jul 20 15:01 test3.dir/file.3
0:user:joe:read_data:inherited:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow
# touch test3.dir/file.3
# ls -v test3.dir/file.3
-rw-r--r--+  1 root     root           0 Jun 23 15:25 test3.dir/file.3
0:user:joe:read_data:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow
# mkdir test3.dir/subdir.1
# ls -dv test3.dir/subdir.1
drwxr-xr-x+  2 root     root           2 Jun 23 15:26 test3.dir/subdir.1
0:user:joe:list_directory/read_data/execute:file_inherit/dir_inherit
:allow
1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/read_xattr/write_xattr/execute/read_attributes
/write_attributes/read_acl/write_acl/write_owner/synchronize:allow
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

위 예에서 group@everyone@에 대한 부모 디렉토리의 권한 비트가 쓰기 및 실행 권한을 거부하므로 사용자 joe에 쓰기 및 실행 권한이 거부됩니다. 기본 aclinherit 등록 정보는 restricted이며, write_dataexecute 권한이 상속되지 않습니다.

다음 예에서 사용자 joe에 대해 새로 만든 파일에 상속되는 읽기, 쓰기, 실행 권한이 부여되지만 후속 디렉토리 내용으로 전파되지 않습니다.

# chmod A+user:joe:read_data/write_data/execute:file_inherit/no_propagate:allow
test4.dir
# ls -dv test4.dir
drwxr--r--+  2 root     root           2 Mar  1 12:11 test4.dir
0:user:joe:list_directory/read_data/add_file/write_data/execute
:file_inherit/no_propagate:allow
1: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
2:group@:list_directory/read_data/read_xattr/read_attributes/read_acl
/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl
/synchronize:allow

다음 예에 나타난 것처럼, joeread_data/write_data/execute 권한이 소유 그룹의 권한에 따라 축소됩니다.

# touch test4.dir/file.4
# ls -v test4.dir/file.4
-rw-r--r--+  1 root     root           0 Jul 20 15:09 test4.dir/file.4
0:user:joe:read_data:inherited:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow
예 7-8  ACL 상속 모드를 Pass Through로 설정한 채 ACL 상속

tank/cindy 파일 시스템의 aclinherit 등록 정보가 passthrough로 설정된 경우 사용자 joe가 새로 만든 file.5에 대해 test4.dir에 적용된 ACL을 상속합니다.

# zfs set aclinherit=passthrough tank/cindy
# touch test4.dir/file.5
# ls -v test4.dir/file.5
-rw-r--r--+  1 root     root           0 Jul 20 14:16 test4.dir/file.5
0:user:joe:read_data/write_data/execute:inherited:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow
예 7-9  ACL 상속 모드를 Discard로 설정한 채 ACL 상속

파일 시스템의 aclinherit 등록 정보가 discard로 설정된 경우 디렉토리의 권한 비트가 변경될 때 ACL이 잠재적으로 무시될 수 있습니다. 예를 들면 다음과 같습니다.

# zfs set aclinherit=discard tank/cindy
# chmod A+user:joe:read_data/write_data/execute:dir_inherit:allow test5.dir
# ls -dv test5.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:18 test5.dir
0:user:joe:list_directory/read_data/add_file/write_data/execute
:dir_inherit:allow
1: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
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

나중에 디렉토리의 권한 비트를 축소하기로 결정하면 복잡한 ACL이 무시됩니다. 예를 들면 다음과 같습니다.

# chmod 744 test5.dir
# ls -dv test5.dir
drwxr--r--   2 root     root           2 Jul 20 14:18 test5.dir
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/read_attributes/read_acl
/synchronize:allow
2:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl
/synchronize:allow
예 7-10  ACL 상속 모드를 Noallow로 설정한 채 ACL 상속

다음 예에서 2개의 복잡한 ACL이 파일 상속과 함께 설정됩니다. 한 ACL은 read_data 권한을 허용하고, 한 ACL은 read_data 권한을 거부합니다. 이 예는 동일한 chmod 명령에서 두 ACE를 지정하는 방법을 보여줍니다.

# zfs set aclinherit=noallow tank/cindy
# chmod A+user:joe:read_data:file_inherit:deny,user:lp:read_data:file_inherit:allow
test6.dir
# ls -dv test6.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:22 test6.dir
0:user:joe:read_data:file_inherit:deny
1:user:lp:read_data:file_inherit:allow
2: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
3:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
4:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

다음 예에 나타난 것처럼, 새 파일을 만들 때 read_data 권한을 허용하는 ACL이 무시됩니다.

# touch test6.dir/file.6
# ls -v test6.dir/file.6
-rw-r--r--+  1 root     root           0 Jul 20 14:23 test6.dir/file.6
0:user:joe:read_data:inherited:deny
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow