ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
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 ファイルの保護
ZFS ファイルの ACL をコンパクト形式で設定および表示する
10. Oracle Solaris ZFS の高度なトピック
11. 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-3 を参照してください。
そのアクセス権を許可するかまたは拒否するかを指定します。
次の例では、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 継承を使用する目的は、親ディレクトリの既存のアクセス権ビットを考慮しながら、意図した ACL を新しく作成するファイルまたはディレクトリが継承できるようにすることです。
デフォルトでは、ACL は伝達されません。ディレクトリに非簡易 ACL を設定した場合でも、その ACL はそれ以降に作成されるディレクトリには継承されません。ACL を継承する場合は、ファイルまたはディレクトリにそのことを 指定する必要があります。
表 8-3 ACL 継承フラグ
|
また、aclinherit ファイルシステムプロパティーを使用して、デフォルトの ACL 継承ポリシーをファイルシステムに設定することもできます。ポリシーの厳密度はプロパティーによって異なります。詳細については、次の節を参照してください。
ZFS ファイルシステムには ACL 継承の動作を決定するための aclinherit プロパティーが含まれています。値には次のものが含まれます。
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 です。