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

인쇄 보기 종료

업데이트 날짜: 2014년 12월
 
 

ZFS 권한 위임 예

예 8-1  개별 사용자에게 권한 위임

create 및 mount 권한을 개별 사용자에게 위임할 때는 사용자에게 기본 마운트 지점에 대한 사용 권한이 있어야 합니다.

예를 들어, 사용자 mark에게 tank 파일 시스템에 대한 create 및 mount 권한을 위임하려면 먼저 권한을 설정하십시오.

# chmod A+user:mark:add_subdirectory:fd:allow /tank/home

그런 다음 zfs allow 명령을 사용하여 create, destroy 및 mount 권한을 위임하십시오. 예를 들면 다음과 같습니다.

# zfs allow mark create,destroy,mount tank/home

그러면 사용자 mark가 tank/home 파일 시스템에 고유한 파일 시스템을 만들 수 있습니다. 예를 들면 다음과 같습니다.

# su mark
mark$ zfs create tank/home/mark
mark$ ^D
# su lp
$ zfs create tank/home/lp
cannot create 'tank/home/lp': permission denied
예 8-2  그룹에 create 및 destroy 권한 위임

다음 예에서는 staff 그룹의 모두가 tank/home 파일 시스템에 파일 시스템을 만들고 마운트하며 고유한 파일 시스템을 삭제할 수 있도록 파일 시스템을 설정하는 방법을 보여줍니다. 그러나 staff 그룹 구성원이 다른 사람의 파일 시스템을 삭제할 수는 없습니다.

# zfs allow staff create,mount tank/home
# zfs allow -c create,destroy tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Local+Descendent permissions:
group staff create,mount
# su cindy
cindy% zfs create tank/home/cindy/files
cindy% exit
# su mark
mark% zfs create tank/home/mark/data
mark% exit
cindy% zfs destroy tank/home/mark/data
cannot destroy 'tank/home/mark/data': permission denied
예 8-3  올바른 파일 시스템 레벨에서 권한 위임

올바른 파일 시스템 레벨에서 사용자 권한을 위임해야 합니다. 예를 들어, 사용자 mark에게는 로컬 및 종속 파일 시스템에 대한 create, destroy 및 mount 권한이 위임되었습니다. 사용자 mark는 tank/home 파일 시스템의 스냅샷을 만들 수 있는 로컬 권한을 위임 받았지만 고유 파일 시스템의 스냅샷을 만들 수 없습니다. 따라서 올바른 파일 시스템 레벨에서 snapshot 권한을 위임 받은 것이 아닙니다.

# zfs allow -l mark snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Local permissions:
user mark snapshot
Local+Descendent permissions:
group staff create,mount
# su mark
mark$ zfs snapshot tank/home@snap1
mark$ zfs snapshot tank/home/mark@snap1
cannot create snapshot 'tank/home/mark@snap1': permission denied

종속 파일 시스템 레벨에서 사용자 mark에게 권한을 위임하려면 zfs allow –d 옵션을 사용하십시오. 예를 들면 다음과 같습니다.

# zfs unallow -l mark snapshot tank/home
# zfs allow -d mark snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy
Descendent permissions:
user mark snapshot
Local+Descendent permissions:
group staff create,mount
# su mark
$ zfs snapshot tank/home@snap2
cannot create snapshot 'tank/home@snap2': permission denied
$ zfs snapshot tank/home/mark@snappy

이제 사용자 mark가 tank/home 파일 시스템 레벨 아래에만 스냅샷을 만들 수 있습니다.

예 8-4  복잡한 위임 권한 정의 및 사용

사용자 또는 그룹에 특정 권한을 위임할 수 있습니다. 예를 들어, 다음 zfs allow 명령은 staff 그룹에 특정 권한을 위임합니다. 또한 tank/home 파일 시스템이 만들어진 후 destroy 및 snapshot 권한이 위임됩니다.

# zfs allow staff create,mount tank/home
# zfs allow -c destroy,snapshot tank/home
# zfs allow tank/home
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy,snapshot
Local+Descendent permissions:
group staff create,mount

사용자 mark는 staff 그룹에 속하므로 tank/home에서 파일 시스템을 만들 수 있습니다. 또한 사용자 mark는 관련 권한을 가지고 있으므로 tank/home/mark2의 스냅샷을 만들 수 있습니다. 예를 들면 다음과 같습니다.

# su mark
$ zfs create tank/home/mark2
$ zfs allow tank/home/mark2
---- Permissions on tank/home/mark2 ----------------------------------
Local permissions:
user mark create,destroy,snapshot
---- Permissions on tank/home ----------------------------------------
Create time permissions:
create,destroy,snapshot
Local+Descendent permissions:
group staff create,mount

하지만 사용자 mark는 관련 사용 권한을 가지고 있지 않으므로 tank/home/mark에서 스냅샷을 만들 수 없습니다. 예를 들면 다음과 같습니다.

$ zfs snapshot tank/home/mark@snap1
cannot create snapshot 'tank/home/mark@snap1': permission denied

이 예에서 사용자 mark는 자신의 홈 디렉토리에 대한 create 권한을 가지고 있으므로 스냅샷을 만들 수 있습니다. 이 시나리오는 파일 시스템이 NFS 마운트 시스템인 경우 유용합니다.

$ cd /tank/home/mark2
$ ls
$ cd .zfs
$ ls
shares snapshot
$ cd snapshot
$ ls -l
total 3
drwxr-xr-x   2 mark    staff          2 Sep 27 15:55 snap1
$ pwd
/tank/home/mark2/.zfs/snapshot
$ mkdir snap2
$ zfs list
# zfs list -r tank/home
NAME                    USED  AVAIL  REFER  MOUNTPOINT
tank/home/mark           63K  62.3G    32K  /tank/home/mark
tank/home/mark2          49K  62.3G    31K  /tank/home/mark2
tank/home/mark2@snap1    18K      -    31K  -
tank/home/mark2@snap2      0      -    31K  -
$ ls
snap1  snap2
$ rmdir snap2
$ ls
snap1
예 8-5  ZFS 위임 권한 세트 정의 및 사용

다음 예에서는 권한 세트 @myset를 만들고 tank 파일 시스템에 대해 staff 그룹에 이 권한 세트와 rename 권한을 위임하는 방법을 보여줍니다. 사용자 cindy는 staff 그룹에 속하며 tank에서 파일 시스템을 만들 수 있는 권한을 가지고 있지만, 사용자 lp는 tank에서 파일 시스템을 만들 수 있는 권한을 가지고 있지 않습니다.

# zfs allow -s @myset create,destroy,mount,snapshot,promote,clone,readonly tank
# zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
# zfs allow staff @myset,rename tank
# zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
Local+Descendent permissions:
group staff @myset,rename
# chmod A+group:staff:add_subdirectory:fd:allow tank
# su cindy
cindy% zfs create tank/data
cindy% zfs allow tank
---- Permissions on tank ---------------------------------------------
Permission sets:
@myset clone,create,destroy,mount,promote,readonly,snapshot
Local+Descendent permissions:
group staff @myset,rename
cindy% ls -l /tank
total 15
drwxr-xr-x   2 cindy   staff          2 Jun 24 10:55 data
cindy% exit
# su lp
$ zfs create tank/lp
cannot create 'tank/lp': permission denied