ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris ZFS 管理ガイド Oracle Solaris 10 8/11 Information Library (日本語) |
1. Oracle Solaris ZFS ファイルシステム (概要)
3. Oracle Solaris ZFS ファイルシステムと従来のファイルシステムの相違点
4. Oracle Solaris ZFS ストレージプールの管理
5. Oracle Solaris ZFS ルートファイルシステムのインストールとブート
6. Oracle Solaris ZFS ファイルシステムの管理
7. Oracle Solaris ZFS のスナップショットとクローンの操作
8. ACL および属性を使用した Oracle Solaris ZFS ファイルの保護
10. Oracle Solaris ZFS の高度なトピック
11. Oracle Solaris ZFS のトラブルシューティングとプールの回復
ZFS ファイルのアクセス権をコンパクト形式で設定および表示できます。コンパクト形式では、一意の 14 個の文字を使ってアクセス権を表現します。アクセス権を表現するためのコンパクト形式の文字については、表 8-2 および表 8-3 を参照してください。
ファイルとディレクトリのコンパクト形式の ACL リストは、ls -V コマンドを使用して表示できます。次に例を示します。
# ls -V file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
コンパクト形式の ACL 出力について説明します。
この所有者は、このファイルの内容を読み取って変更することができます (rw=read_data/write_data)、(p=append_data)。この所有者は、タイムスタンプ、拡張属性、ACL などのファイルの属性を変更することもできます (a=read_attributes 、A=write_xattr、R= read_xattr、W=write_attributes、 c=read_acl、C=write_acl)。さらに、この所有者はファイルの所有権を変更できます (o=write_owner)。
synchronize の許可アクセス権は、現在のところ実装されていません。
グループには、ファイルへの読み取りアクセス権 (r= read_data) およびファイルの属性への読み取りアクセス権 (a=read_attributes 、R=read_xattr、c= read_acl) が付与されます。
synchronize の許可アクセス権は、現在のところ実装されていません。
ユーザーやグループ以外の全員は、このファイルおよびこのファイルの属性を読み取るアクセス権が付与されます (r=read_data、a=append_data、R=read_xattr、c=read_acl、s=synchronize)。
synchronize の許可アクセス権は、現在のところ実装されていません。
コンパクト形式の ACL には、冗長形式の ACL と比べて次の利点があります。
アクセス権を chmod コマンドに指定するときに、順対応引数として指定できます。
アクセス権がないことを表すハイフン (-) 文字は、省略してもかまいません。必要な文字だけを指定する必要があります。
アクセス権と継承フラグは、同じ方法で設定します。
冗長形式の ACL の使用方法については、「ZFS ファイルの ACL を冗長形式で設定および表示する」を参照してください。
例 8-10 コンパクト形式で ACL を設定および表示する
# ls -V file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
次の例では、ユーザー gozer に file.1 の read_data/execute アクセス権が追加されます。
# chmod A+user:gozer:rx:allow file.1 # ls -V file.1 -rw-r--r--+ 1 root root 206663 Jun 23 15:06 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 Jun 23 16:04 dir.2 user:gozer:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------: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 Jun 23 16:04 dir.2 user:cindy:rwx-----------:fd----:allow user:gozer:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------:allow group@:r-x---a-R-c--s:------:allow everyone@:r-x---a-R-c--s:------:allow
例 8-11 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 Jun 23 16:10 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 Jun 23 16:11 file.1 owner@:rwxpdDaARWcCos:------:allow group@:rwxp----------:------:allow everyone@:--------------:------:allow
次の例では、新しく作成されたディレクトリに、このディレクトリへのアクセスを制御する ACE と、この新しく作成されたディレクトリの子にあとで伝達するための ACE が継承されます。
# mkdir subdir.1 # ls -dV subdir.1 drwxrwx---+ 2 root root 2 Jun 23 16:13 subdir.1 owner@:rwxpdDaARWcCos:fd----:allow group@:rwxp----------:fd----:allow everyone@:--------------:fd----:allow
fd---- エントリは継承の伝達に関するもので、アクセス制御時には考慮されません。次の例では、簡易 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 Jun 23 16:15 file.2 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
例 8-12 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 Jun 23 16:17 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 Jun 23 16:18 test1.dir/file1 owner@:rw-pdDaARWcCos:------:allow group@:rw-p----------:------:allow everyone@:--------------:------:allow
次に、t という実行可能ファイルが、cc コンパイラを使用して testdir ディレクトリーに作成されます。
# cc -o t t.c # ls -V t -rwxrwx---+ 1 root root 7396 Dec 3 15:19 t owner@:rwxpdDaARWcCos:------:allow group@:rwxp----------:------:allow everyone@:--------------:------:allow
cc が要求したアクセス権は 0777 であるため、アクセス権は 0770 になります。その結果、owner@、group@、および everyone@ エントリから実行権が継承されます。