Go to main content
Oracle® Solaris 11.3 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

ZFS アクセス権の委任の例

使用例 51  個別のユーザーにアクセス権を委任する

create および mount アクセス権を個人ユーザーに委任するときは、ユーザーが配下のマウントポイントに対するアクセス権を持っていることを確認する必要があります。

たとえば、ユーザー markcreate アクセス権と mount アクセス権を system1 ファイルシステムに関して委任するには、まず次のようにアクセス権を設定します。

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

その後、zfs allow コマンドを使用して createdestroy、および mount アクセス権を委任します。例:

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

これで、ユーザー marksystem1/home ファイルシステム内に自分のファイルシステムを作成できます。例:

# su mark
mark$ zfs create system1/home/mark
mark$ ^D
# su lp
$ zfs create system1/home/lp
cannot create 'system1/home/lp': permission denied
使用例 52  グループに create および destroy アクセス権を委任する

次の例では、ファイルシステムを設定して、staff グループの任意のメンバーが system1/home ファイルシステムでファイルシステムの作成とマウント、および各自のファイルシステムの破棄を実行できるようにする方法を示します。ただし、staff グループメンバーはほかのユーザーのファイルシステムを破棄できません。

# zfs allow staff create,mount system1/home
# zfs allow -c create,destroy system1/home
# zfs allow system1/home
---- Permissions on system1/home ----------------------------------------
Create time permissions:
create,destroy
Local+descendant permissions:
group staff create,mount
# su cindy
cindy% zfs create system1/home/cindy/files
cindy% exit
# su mark
mark% zfs create system1/home/mark/data
mark% exit
cindy% zfs destroy system1/home/mark/data
cannot destroy 'system1/home/mark/data': permission denied
使用例 53  正しいファイルシステムレベルでアクセス権を委任する

ユーザーにアクセス権を委任する場合は、必ず正しいファイルシステムレベルで委任してください。たとえば、ユーザー mark には createdestroy、および mount アクセス権が、ローカルおよび子孫のファイルシステムに関して委任されています。ユーザー mark には system1/home ファイルシステムのスナップショットを作成するローカルアクセス権が委任されていますが、自分のファイルシステムのスナップショットを作成することは許可されていません。したがって、このユーザーには snapshot アクセス権が正しいファイルシステムレベルで委任されていません。

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

ユーザー mark に子孫ファイルシステムレベルのアクセス権を委任するには、zfs allow –d オプションを使用します。例:

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

これで、ユーザー marksystem1/home ファイルシステムレベルの下のスナップショットだけを作成できます。

使用例 54  複雑な委任アクセス権を定義して使用する

特定のアクセス権をユーザーやグループに委任できます。たとえば、次の zfs allow コマンドでは、特定のアクセス権が staff グループに委任されます。また、destroy アクセス権と snapshot アクセス権が system1/home ファイルシステムの作成後に委任されます。

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

ユーザー markstaff グループのメンバーであるため、system1/home 内にファイルシステムを作成できます。また、ユーザー mark は、system1/home/mark2 のスナップショットを作成するための特定のアクセス権を持っているため、そのようなスナップショットを作成できます。例:

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

ただし、ユーザー marksystem1/home/mark でスナップショットを作成するための特定のアクセス権を持っていないため、そのようなスナップショットは作成できません。例:

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

この例では、ユーザー mark は自身のホームディレクトリで create アクセス権を持っていますが、これは、このユーザーがスナップショットを作成できることを意味します。このシナリオは、ファイルシステムを NFS マウントする場合に役立ちます。

$ cd /system1/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
/system1/home/mark2/.zfs/snapshot
$ mkdir snap2
$ zfs list
# zfs list -r system1/home
NAME                       USED  AVAIL  REFER  MOUNTPOINT
system1/home/mark           63K  62.3G    32K  /system1/home/mark
system1/home/mark2          49K  62.3G    31K  /system1/home/mark2
system1/home/mark2@snap1    18K      -    31K  -
system1/home/mark2@snap2      0      -    31K  -
$ ls
snap1  snap2
$ rmdir snap2
$ ls
snap1
使用例 55  ZFS 委任アクセス権セットを定義して使用する

次の例では、アクセス権セット @myset を作成し、グループ staff にこのアクセス権セットと rename アクセス権を system1 ファイルシステムに関して委任する方法を示します。ユーザー cindystaff グループのメンバーであり、system1 にファイルシステムを作成するアクセス権を持っています。ただし、ユーザー lpsystem1 にファイルシステムを作成するアクセス権を持っていません。

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