JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris 11.1 の管理: ZFS ファイルシステム     Oracle Solaris 11.1 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  Oracle Solaris ZFS ファイルシステム (概要)

2.  Oracle Solaris ZFS 入門

3.  Oracle Solaris ZFS ストレージプールの管理

4.  ZFS ルートプールのコンポーネントの管理

5.  Oracle Solaris ZFS ファイルシステムの管理

6.  Oracle Solaris ZFS のスナップショットとクローンの操作

7.  ACL および属性を使用した Oracle Solaris ZFS ファイルの保護

Solaris ACL モデル

ACL を設定する構文の説明

ZFS ACL セット

ACL 継承

ACL プロパティー

ZFS ファイルに ACL を設定する

ZFS ファイルの ACL を冗長形式で設定および表示する

ZFS ファイルの ACL 継承を冗長形式で設定する

ZFS ファイルの ACL をコンパクト形式で設定および表示する

特別な属性を ZFS ファイルに適用する

8.  Oracle Solaris ZFS 委任管理

9.  Oracle Solaris ZFS の高度なトピック

10.  Oracle Solaris ZFS のトラブルシューティングとプールの回復

11.  スナップショットのアーカイブとルートプールの回復

12.  推奨の Oracle Solaris ZFS プラクティス

A.  Oracle Solaris ZFS バージョンの説明

索引

ZFS ファイルの ACL をコンパクト形式で設定および表示する

ZFS ファイルのアクセス権をコンパクト形式で設定および表示できます。コンパクト形式では、一意の 14 個の文字を使ってアクセス権を表現します。コンパクトなアクセス権を表現する文字の一覧は、表 7-2 および表 7-4 に記載されています。

ファイルとディレクトリのコンパクト形式の ACL リストは、ls -V コマンドを使用して表示できます。例:

# ls -V file.1
-rw-r--r--   1 root     root      206695 Jul 20 14:27 file.1
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

コンパクト形式の ACL 出力について説明します。

owner@

この所有者は、このファイルの内容を読み取って変更することができます (rw=read_data/write_data)、 (p=append_data)。この所有者は、タイムスタンプ、拡張属性、ACL などのファイル属性を変更することもできます (a=read_attributesW=write_xattrR=read_xattrA=write_attributesc=read_aclC=write_acl)。さらに、この所有者はファイルの所有権を変更することもできます (o=write_owner)。

synchronize (s) アクセス権は、現在のところ実装されていません。

group@

グループには、ファイルへの読み取りアクセス権 (r= read_data) およびファイルの属性への読み取りアクセス権 (a=read_attributesR=read_xattrc= read_acl) が付与されます。

synchronize (s) アクセス権は、現在のところ実装されていません。

everyone@

ユーザーやグループ以外の全員は、このファイルおよびこのファイルの属性を読み取るアクセス権が付与されます (r=read_dataa=append_dataR=read_xattrc=read_acls=synchronize)。

synchronize (s) アクセス権は、現在のところ実装されていません。

コンパクト形式の ACL には、冗長形式の ACL と比べて次の利点があります。

冗長形式の ACL の使用方法については、「ZFS ファイルの ACL を冗長形式で設定および表示する」を参照してください。

例 7-11 コンパクト形式で ACL を設定および表示する

次の例では、簡易 ACL が file.1 にあります。

# ls -V file.1
-rw-r--r--   1 root     root      206695 Jul 20 14:27 file.1
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

次の例では、ユーザー gozerfile.1read_data/execute アクセス権が追加されます。

# chmod A+user:gozer:rx:allow file.1
# ls -V file.1
-rw-r--r--+  1 root     root      206695 Jul 20 14:27 file.1
             user:gozer:r-x-----------:-------:allow
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

次の例では、コンパクト形式を使ってユーザー gozer に読み取り、書き込み、および実行アクセス権を付与します。これらのアクセス権は、新しく作成されたファイルとディレクトリに継承されます。

# chmod A+user:gozer:rwx:fd:allow dir.2
# ls -dV dir.2
drwxr-xr-x+  2 root     root           2 Jul 20 14:33 dir.2
             user:gozer:rwx-----------:fd-----:allow
                 owner@:rwxp-DaARWcCos:-------:allow
                 group@:r-x---a-R-c--s:-------:allow
              everyone@:r-x---a-R-c--s:-------:allow

ls -V の出力にあるアクセス権と継承フラグをコンパクト形式の chmod にカット&ペーストすることもできます。たとえば、ユーザー gozer についての dir.2 のアクセス権と継承フラグを dir.2 上のユーザー cindy に複製するには、アクセス権と継承フラグ (rwx-----------:fd-----:allow) を chmod コマンドにコピー&ペーストします。例:

# chmod A+user:cindy:rwx-----------:fd-----:allow dir.2
# ls -dV dir.2
drwxr-xr-x+  2 root     root           2 Jul 20 14:33 dir.2
             user:cindy:rwx-----------:fd-----:allow
             user:gozer:rwx-----------:fd-----:allow
                 owner@:rwxp-DaARWcCos:-------:allow
                 group@:r-x---a-R-c--s:-------:allow
              everyone@:r-x---a-R-c--s:-------:allow

例 7-12 ACL 継承モードが passthrough に設定された ACL 継承

aclinherit プロパティーが passthrough に設定されているファイルシステムは、継承時に ACL エントリに加えられた変更を除く、継承可能なすべての ACL エントリを継承します。このプロパティーが passthrough に設定されている場合、作成されるファイルのアクセス権モードは継承可能な ACL によって決定されます。アクセス権モードに影響を与える継承可能な ACL が存在しない場合、アクセス権モードはアプリケーションから要求されたモードに従って設定されます。

次の例では、コンパクト形式の ACL 構文を使用して、aclinherit モードを passthrough に設定することによってアクセス権ビットを継承する方法を示します。

次の例では、ACL を test1.dir に設定して継承を強制します。この構文によって新しく作成されたファイルには、owner@group@、および everyone@ ACL エントリが作成されます。新しく作成されたディレクトリには、owner@group@、および everyone@ ACL エントリが継承されます。

# zfs set aclinherit=passthrough tank/cindy
# pwd
/tank/cindy
# mkdir test1.dir
# chmod A=owner@:rwxpcCosRrWaAdD:fd:allow,group@:rwxp:fd:allow,
everyone@::fd:allow test1.dir
# ls -Vd test1.dir
drwxrwx---+  2 root     root           2 Jul 20 14:42 test1.dir
                 owner@:rwxpdDaARWcCos:fd-----:allow
                 group@:rwxp----------:fd-----:allow
              everyone@:--------------:fd-----:allow

次の例では、新しく作成されるファイルに継承されるように指定されていた ACL が、新しく作成されたファイルに継承されます。

# cd test1.dir
# touch file.1
# ls -V file.1
-rwxrwx---+  1 root     root           0 Jul 20 14:44 file.1
                 owner@:rwxpdDaARWcCos:------I:allow
                 group@:rwxp----------:------I:allow
              everyone@:--------------:------I:allow

次の例では、新しく作成されたディレクトリに、このディレクトリへのアクセスを制御する ACE と、この新しく作成されたディレクトリの子にあとで伝達するための ACE が継承されます。

# mkdir subdir.1
# ls -dV subdir.1
drwxrwx---+  2 root     root           2 Jul 20 14:45 subdir.1
                 owner@:rwxpdDaARWcCos:fd----I:allow
                 group@:rwxp----------:fd----I:allow
              everyone@:--------------:fd----I:allow

fd----I エントリは継承の伝達に関するもので、アクセス制御時には考慮されません。

次の例では、簡易 ACL を持つファイルが、継承される ACE が存在しない別のディレクトリに作成されます。

# cd /tank/cindy
# mkdir test2.dir
# cd test2.dir
# touch file.2
# ls -V file.2
-rw-r--r--   1 root     root           0 Jul 20 14:48 file.2
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:r-----a-R-c--s:-------:allow

例 7-13 ACL 継承モードが passthrough-x に設定された ACL 継承

aclinherit=passthrough-x を有効にすると、ファイル作成モードおよびファイル作成モードに影響する継承可能な ACE モードで実行権が設定されている場合にのみ、owner@group@、または everyone@ の実行 (x) 権を使用してファイルが作成されます。

次の例では、aclinherit モードを passthrough-x に設定して実行権を継承する方法を示します。

# zfs set aclinherit=passthrough-x tank/cindy

次の ACL は /tank/cindy/test1.dir で設定されており、owner@ のファイルに対する実行可能 ACL 継承を提供します。

# chmod A=owner@:rwxpcCosRrWaAdD:fd:allow,group@:rwxp:fd:allow,
everyone@::fd:allow test1.dir
# ls -Vd test1.dir
drwxrwx---+  2 root     root           2 Jul 20 14:50 test1.dir
                 owner@:rwxpdDaARWcCos:fd-----:allow
                 group@:rwxp----------:fd-----:allow
              everyone@:--------------:fd-----:allow

要求されたアクセス権 0666 を使用してファイル (file1) が作成されます。この結果、アクセス権 0660 が設定されます。作成モードで要求していないため、実行権は継承されません。

# touch test1.dir/file1
# ls -V test1.dir/file1
-rw-rw----+  1 root     root           0 Jul 20 14:52 test1.dir/file1
                 owner@:rw-pdDaARWcCos:------I:allow
                 group@:rw-p----------:------I:allow
              everyone@:--------------:------I:allow

次に、t という実行可能ファイルが、cc コンパイラを使用して testdir ディレクトリーに作成されます。

# cc -o t t.c
# ls -V t
-rwxrwx---+  1 root     root        7396 Dec  3 15:19 t
                 owner@:rwxpdDaARWcCos:------I:allow
                 group@:rwxp----------:------I:allow
              everyone@:--------------:------I:allow

cc が要求したアクセス権は 0777 であるため、アクセス権は 0770 になります。その結果、owner@group@、および everyone@ エントリから実行権が継承されます。

例 7-14 ZFS ファイルでの ACL と chmod 操作との相互作用

次の例では、特定の aclmode および aclinherit プロパティー値が、既存の ACL と chmod 操作との関連にどのように影響するかについて説明します。この操作は、ファイルまたはディレクトリアクセス権を変更して、所有グループに一致するように既存の ACL アクセス権を縮小または拡張させるものです。

この例では、aclmode プロパティーは mask に設定され、aclinherit プロパティーは restricted に設定されます。この例の ACL アクセス権は、変更中のアクセス権をより示しやすくするコンパクトモードで表示されます。

元のファイルおよびグループ所有権と ACL アクセス権は次のとおりです。

# zfs set aclmode=mask pond/whoville
# zfs set aclinherit=restricted pond/whoville

# ls -lV file.1
-rwxrwx---+  1 root     root      206695 Aug 30 16:03 file.1
               user:amy:r-----a-R-c---:-------:allow
              user:rory:r-----a-R-c---:-------:allow
         group:sysadmin:rw-p--aARWc---:-------:allow
            group:staff:rw-p--aARWc---:-------:allow
                 owner@:rwxp--aARWcCos:-------:allow
                 group@:rwxp--aARWc--s:-------:allow
              everyone@:------a-R-c--s:-------:allow

chown 操作によって file.1 のファイル所有権が変更され、所有しているユーザー amy によって出力が表示されます。例:

# chown amy:staff file.1
# su - amy
$ ls -lV file.1
-rwxrwx---+  1 amy      staff     206695 Aug 30 16:03 file.1
               user:amy:r-----a-R-c---:-------:allow
              user:rory:r-----a-R-c---:-------:allow
         group:sysadmin:rw-p--aARWc---:-------:allow
            group:staff:rw-p--aARWc---:-------:allow
                 owner@:rwxp--aARWcCos:-------:allow
                 group@:rwxp--aARWc--s:-------:allow
              everyone@:------a-R-c--s:-------:allow

次の chmod 操作では、アクセス権がより制限の厳しいモードに変更されます。この例では、変更された sysadmin グループと staff グループの ACL アクセス権が、所有しているグループのアクセス権を超えることはありません。

$ chmod 640 file.1
$ ls -lV file.1
-rw-r-----+  1 amy      staff     206695 Aug 30 16:03 file.1
               user:amy:r-----a-R-c---:-------:allow
              user:rory:r-----a-R-c---:-------:allow
         group:sysadmin:r-----a-R-c---:-------:allow
            group:staff:r-----a-R-c---:-------:allow
                 owner@:rw-p--aARWcCos:-------:allow
                 group@:r-----a-R-c--s:-------:allow
              everyone@:------a-R-c--s:-------:allow

次の chmod 操作では、アクセス権がより制限の緩やかなモードに変更されます。この例では、変更された sysadmin グループと staff グループの ACL アクセス権が、所有しているグループと同じアクセス権を許可するように復元されます。

$ chmod 770 file.1
$ ls -lV file.1
-rwxrwx---+  1 amy      staff     206695 Aug 30 16:03 file.1
               user:amy:r-----a-R-c---:-------:allow
              user:rory:r-----a-R-c---:-------:allow
         group:sysadmin:rw-p--aARWc---:-------:allow
            group:staff:rw-p--aARWc---:-------:allow
                 owner@:rwxp--aARWcCos:-------:allow
                 group@:rwxp--aARWc--s:-------:allow
              everyone@:------a-R-c--s:-------:allow