ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris の管理: ZFS ファイルシステム Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris ZFS ファイルシステム (概要)
3. Oracle Solaris ZFS ファイルシステムと従来のファイルシステムの相違点
4. Oracle Solaris ZFS ストレージプールの管理
6. Oracle Solaris ZFS ファイルシステムの管理
7. Oracle Solaris ZFS のスナップショットとクローンの操作
8. ACL および属性を使用した Oracle Solaris ZFS ファイルの保護
ZFS 委任アクセス権を削除する (zfs unallow)
10. Oracle Solaris ZFS の高度なトピック
11. Oracle Solaris ZFS のトラブルシューティングとプールの回復
13. 推奨の Oracle Solaris ZFS プラクティス
例 9-1 個別のユーザーにアクセス権を委任する
create アクセス権と mount アクセス権を個別のユーザーに委任する場合は、そのユーザーが配下のマウントポイントに対するアクセス権を持っていることを確認する必要があります。
たとえば、ユーザー mark に create アクセス権と mount アクセス権を tank ファイルシステムに関して委任するには、まず次のようにアクセス権を設定します。
# 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
例 9-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
例 9-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 ファイルシステムレベルの下のスナップショットだけを作成できるようになります。
例 9-4 複雑な委任アクセス権を定義して使用する
特定のアクセス権をユーザーやグループに委任できます。たとえば、次の zfs allow コマンドでは、特定のアクセス権が staff グループに委任されます。また、destroy アクセス権と snapshot アクセス権が tank/home ファイルシステムの作成後に委任されます。
# 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
例 9-5 ZFS 委任アクセス権セットを定義して使用する
次の例では、アクセス権セット @myset を作成し、グループ staff にこのアクセス権セットと rename アクセス権を tank ファイルシステムに関して委任する方法を示します。ユーザー 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