ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
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 ファイルの ACL をコンパクト形式で設定および表示する
10. Oracle Solaris ZFS の高度なトピック
11. Oracle Solaris ZFS のトラブルシューティングとプールの回復
13. 推奨の Oracle Solaris ZFS プラクティス
以前のバージョンの Solaris では、主に POSIX ドラフト ACL 仕様に基づく ACL 実装がサポートされていました。POSIX ドラフトに基づく ACL は、UFS ファイルを保護するために使用され、NFSv4 より前のバージョンの NFS によって変換されます。
NFSv4 を導入したことにより、NFSv4 が提供する UNIX クライアントとUNIX 以外のクライアントとの間の相互運用性を、新しい ACL モデルを使って完全にサポートできるようになりました。NFSv4 仕様で定義されている新しい ACL 実装は、NT 方式の ACL を使用して、より豊かなセマンティクスを実現します。
新しい ACL モデルは、主に次の点が異なっています。
NFSv4 仕様に基づいており、NT 方式の ACL に似ています。
アクセス特権をより詳細に設定できます。詳細は、表 8-2 を参照してください。
setfacl や getfacl コマンドではなく、chmod および ls コマンドを使用して設定および表示します。
ディレクトリのアクセス特権をどのようにサブディレクトリに適用するかを指定するために、より多くの継承セマンティクスを利用できます。詳細については、「ACL 継承」を参照してください。
どちらの ACL モデルを使った場合でも、標準のファイルアクセス権の場合より詳細にアクセス権を制御できます。新しい ACL は、POSIX ドラフト ACL と同様に、複数のアクセス制御エントリ (ACE) で構成されています。
POSIX ドラフト方式の ACL では、1 つのエントリを使用して、許可するアクセス権と拒否するアクセス権を定義します。新しい ACL モデルでは、アクセス権を検査するために、2 種類の ACE が利用されます。ALLOW と DENY です。つまり、どちらの ACE にもアクセス権が定義されていますが、その ACE に定義されていないアクセス権については、その ACE だけを使ってアクセス権を許可または拒否するかを推論することはできません。.
NFSv4 方式の ACL と POSIX ドラフト ACLとの 間の変換は、次のように行われます。
ACL に対応するユーティリティー (cp、mv、tar、cpio、rcp コマンドなど) のいずれかを使用している場合は、ACL が含まれる UFS ファイルを ZFS ファイルシステムに転送するときに、POSIX ドラフト ACL が同等の NFSv4 方式の ACL に変換されます。
一部の NFSv4 方式の ACL は、POSIX ドラフト ACL に変換されます。NFSv4 方式の ACL が POSIX ドラフト ACL に変換されない場合は、次のようなメッセージが表示されます。
# cp -p filea /var/tmp cp: failed to set acl entries on /var/tmp/filea
最新の Solaris リリースを実行するシステム上で ACL の保持オプション (tar -p または cpio -P) を使って UFS tar または cpio アーカイブを作成した場合でも、以前の Solaris リリースを実行するシステム上でそのアーカイブを展開したときは、ACL が失われます。
すべてのファイルが正しいファイルモードで展開されますが、ACL エントリは無視されます。
ufsrestore コマンドを使って ZFS ファイルシステムにデータを復元することができます。元のデータに POSIX 方式の ACL が含まれている場合、それらは NFSv4 方式の ACL に変換されます。
UFS ファイルに NFSv4 方式の ACL を設定しようとすると、次のようなメッセージが表示されます。
chmod: ERROR: ACL type's are different
ZFS ファイルに POSIX 方式の ACL を設定しようとすると、次のようなメッセージが表示されます。
# getfacl filea File system doesn't support aclent_t style ACL's. See acl(5) for more information on Solaris ACL support.
ACL およびバックアップ製品に関するその他の制限については、「ほかのバックアップ製品を使用して ZFS データを保存する」を参照してください。
基本的な ACL の形式として、次の 2 つの形式が用意されています。
簡易 ACL を設定する構文
chmod [options] A[index]{+|=}owner@ |group@ |everyone@: access-permissions/...[:inheritance-flags]: deny | allow file
chmod [options] A-owner@, group@, everyone@:access-permissions /...[:inheritance-flags]:deny | allow file ...
chmod [options] A[index]- file
非簡易 ACL を設定する構文
chmod [options] A[index]{+|=}user|group:name:access-permissions /...[:inheritance-flags]:deny | allow file
chmod [options] A-user|group:name:access-permissions /...[:inheritance-flags]:deny | allow file ...
chmod [options] A[index]- file
簡易 ACL 構文の ACL-entry-type を指定します。ACL-entry-types については、表 8-1 を参照してください。
明示的な ACL 構文の ACL-entry-type を指定します。ユーザーとグループの ACL-entry-type には、ACL-entry-ID と、username または groupname も含める必要があります。ACL-entry-types については、表 8-1 を参照してください。
許可または拒否するアクセス権を指定します。ACL アクセス特権については、表 8-2 を参照してください。
ACL 継承フラグのオプションリストを指定します。ACL 継承フラグについては、表 8-4 を参照してください。
そのアクセス権を許可するかまたは拒否するかを指定します。
次の例では、owner@、group@、または everyone@ についての ACL-entry-ID の値は存在しません。
group@:write_data/append_data/execute:deny
次の例では、ACL-entry-ID が含まれています。特定のユーザー (ACL-entry-type) を ACL に含めるためです。
0:user:gozer:list_directory/read_data/execute:allow
ACL エントリが表示されるときは、次のようになります。
2:group@:write_data/append_data/execute:deny
この例では 2 つまり index-ID が指定されていますが、これは、より大きな ACL の ACL エントリであることを示しています。所有者、特定の UID、グループ、および全員のための複数のエントリで構成される可能性があります。chmod コマンドと一緒に index-ID を指定すれば、ACL のどの部分を変更するかを指定できます。たとえば次のように、chmod コマンドに A3 と指定して、インデックス ID 3 を特定することができます。
chmod A3=user:venkman:read_acl:allow filename
ACL エントリタイプは、所有者やグループなどの ACL 表現です。次の表の説明を参照してください。
表 8-1 ACL エントリタイプ
|
表 8-2 ACL アクセス特権
|
次の表に、ACL delete および delete_child の動作の追加詳細を示します。
表 8-3 ACL delete および delete_child アクセス権の動作
|
次の ACL の組み合わせを、個々のアクセス権を個別に設定するのではなく ACL セットで適用できます。次のような ACL セットが利用可能です。
|
これらの ACL セットは事前に定義されたものであり、変更することはできません。
ACL 継承を使用する目的は、親ディレクトリの既存のアクセス権ビットを考慮しながら、意図した ACL を新しく作成するファイルまたはディレクトリが継承できるようにすることです。
デフォルトでは、ACL は伝達されません。ディレクトリに非簡易 ACL を設定した場合でも、その ACL はそれ以降に作成されるディレクトリには継承されません。ACL を継承する場合は、ファイルまたはディレクトリにそのことを 指定する必要があります。
表 8-4 ACL 継承フラグ
|
また、aclinherit ファイルシステムプロパティーを使用して、デフォルトの ACL 継承ポリシーをファイルシステムに設定することもできます。ポリシーの厳密度はプロパティーによって異なります。詳細については、次のセクションを参照してください。
ZFS ファイルシステムには、ACL 継承の特定の動作と、ACL と chmod 操作との関連を判定する、次のプロパティーが含まれています。
aclinherit – ACL 継承の動作を判定します。値には次のものが含まれます。
discard – 新しいオブジェクトの場合に、ファイルまたはディレクトリを作成するときに ACL エントリは継承されません。ファイルまたはディレクトリの ACL は、そのファイルまたはディレクトリのアクセス権モードと等価です。
noallow – 新しいオブジェクトの場合に、継承可能な ACL エントリのうち、アクセスタイプが deny のエントリだけが継承されます。
restricted – 新しいオブジェクトの場合に、ACL エントリが継承されるときに、write_owner および write_acl アクセス権が取り除かれます。
passthrough – プロパティーの値が passthrough に設定されている場合、作成されるファイルのモードは継承可能な ACE によって決定されます。モードに影響を与える継承可能な ACE が存在しない場合、モードはアプリケーションから要求されたモードに従って設定されます。
passthrough-x – セマンティクスは次の点を除き passthrough と同じです。passthrough-x を有効にした場合、ファイル作成モードおよびモードに影響を与える継承可能な ACE で実行アクセス権が設定されている場合に限りファイルが実行 (x) アクセス権付きで作成されます。
aclinherit のデフォルトモードは、restricted です。
aclmode – ファイルが最初に作成されたとき、または chmod の操作中に ACL をどのように変更するかを制御するときに ACL の動作を変更します。次の値を使用できます。
discard – aclmode プロパティーが discard であるファイルシステムでは、ファイルのモードを表さない ACL エントリがすべて削除されます。これがデフォルト値です。
mask – aclmode プロパティーが mask であるファイルシステムでは、ユーザーまたはグループアクセス権が削減されます。アクセス権は、グループアクセス権ビットと同程度にまで低下します。ただし、アクセス権がファイルまたはディレクトリの所有者と同じ UID を持つユーザーエントリである場合を除きます。この場合、ACL アクセス権は、所有者のアクセス権ビットと同程度にまで削減されます。また、明示的な ACL セット操作が実行されていない場合、マスク値はモードが変更しても ACL を保持します。
passthrough – aclmode プロパティーが passthrough であるファイルシステムでは、ファイルまたはディレクトリの新規モードを表す必須の ACL エントリを生成する以外、ACL に変更は加えられません。
aclmode のデフォルトモードは、discard です。
aclmode プロパティーの使用方法については、例 8-14 を参照してください。