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 バージョンの説明

索引

Solaris ACL モデル

以前のバージョンの Solaris では、主に POSIX ドラフト ACL 仕様に基づく ACL 実装がサポートされていました。POSIX ドラフトに基づく ACL は、UFS ファイルを保護するために使用され、NFSv4 より前のバージョンの NFS によって変換されます。

NFSv4 を導入したことにより、NFSv4 が提供する UNIX クライアントとUNIX 以外のクライアントとの間の相互運用性を、新しい ACL モデルを使って完全にサポートできるようになりました。NFSv4 仕様で定義されている新しい ACL 実装は、NT 方式の ACL を使用して、より豊かなセマンティクスを実現します。

新しい ACL モデルは、主に次の点が異なっています。

どちらの ACL モデルを使った場合でも、標準のファイルアクセス権の場合より詳細にアクセス権を制御できます。新しい ACL は、POSIX ドラフト ACL と同様に、複数のアクセス制御エントリ (ACE) で構成されています。

POSIX ドラフト方式の ACL では、1 つのエントリを使用して、許可するアクセス権と拒否するアクセス権を定義します。新しい ACL モデルでは、アクセス権を検査するために、2 種類の ACE が利用されます。ALLOWDENY です。つまり、どちらの ACE にもアクセス権が定義されていますが、その ACE に定義されていないアクセス権については、その ACE だけを使ってアクセス権を許可または拒否するかを推論することはできません。

NFSv4 方式の ACL と POSIX ドラフト ACLとの 間の変換は、次のように行われます。

ACL およびバックアップ製品に関するその他の制限については、「ほかのバックアップ製品を使用して ZFS データを保存する」を参照してください。

ACL を設定する構文の説明

基本的な 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

owner@, group@, everyone@

簡易 ACL 構文の ACL-entry-type を指定します。ACL-entry-types については、表 7-1 を参照してください。

user または group:ACL-entry-ID=username または groupname

明示的な ACL 構文の ACL-entry-type を指定します。ユーザーとグループの ACL-entry-type には、ACL-entry-ID と、username または groupname も含める必要があります。ACL-entry-types については、表 7-1 を参照してください。

access-permissions/.../

許可または拒否するアクセス権を指定します。ACL アクセス特権については、表 7-2 を参照してください。

inheritance-flags

ACL 継承フラグのオプションリストを指定します。ACL 継承フラグについては、表 7-4 を参照してください。

deny | allow

そのアクセス権を許可するかまたは拒否するかを指定します。

次の例では、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 表現です。次の表の説明を参照してください。

表 7-1 ACL エントリタイプ

ACL エントリタイプ
説明
owner@
オブジェクトの所有者に許可するアクセス権を指定します。
group@
オブジェクトを所有するグループに許可するアクセス権を指定します。
everyone@
ほかのどの ACL エントリにも一致しないすべてのユーザーまたはグループに許可するアクセス権を指定します。
user
ユーザー名を使って、オブジェクトに追加するユーザーに許可するアクセス権を指定します。ACL-entry-ID を含める必要があります。username または userID を指定します。値が有効な数値 UID または username でない場合、その ACL エントリタイプは無効です。
group
グループ名を使って、オブジェクトに追加するグループに許可するアクセス権を指定します。ACL-entry-ID を含める必要があります。groupname または groupID を指定します。値が有効な数値 GID または groupname でない場合、その ACL エントリタイプは無効です。

ACL アクセス特権について、次の表で説明します。

表 7-2 ACL アクセス特権

アクセス特権
アクセス特権のコンパクト表現
説明
add_file
w
ディレクトリに新しいファイルを追加するためのアクセス権。
add_subdirectory
p
ディレクトリ上でサブディレクトリを作成するためのアクセス権。
append_data
p
現時点では実装されていません。
delete
d
ファイルを削除するためのアクセス権。delete アクセス権の特定の動作の詳細については、表 7-3 を参照してください。
delete_child
D
ディレクトリ内のファイルまたはディレクトリを削除するためのアクセス権。delete_child アクセス権の特定の動作の詳細については、表 7-3 を参照してください。
execute
x
ファイルを実行するためのアクセス権またはディレクトリの内容を検索するためのアクセス権。
list_directory
r
ディレクトリの内容を表示するためのアクセス権。
read_acl
c
ACL (ls) を読み取るためのアクセス権。
read_attributes
a
ファイルの基本属性 (ACL 以外) を読み取るためのアクセス権。基本属性は、stat レベルの属性と考えてください。このアクセスマスクビットを許可したエンティティーは、ls(1) および stat(2) を実行できる状態になります。
read_data
r
ファイルの内容を読み取るためのアクセス権。
read_xattr
R
ファイルの拡張属性を読み取るためのアクセス権。または、ファイルの拡張属性ディレクトリの検索を実行するためのアクセス権。
synchronize
s
現時点では実装されていません。
write_xattr
W
拡張属性を作成するためのアクセス権。または、拡張属性ディレクトリに書き込みむためのアクセス権。

このアクセス権を許可したユーザーは、ファイルの拡張属性ディレクトリを作成できます。属性ファイルのアクセス権を使って、その属性にユーザーがアクセスできるかどうかを制御します。

write_data
w
ファイルの内容を変更または置き換えるためのアクセス権。
write_attributes
A
ファイルまたはディレクトリに関連付けられた時間を任意の値に変更するためのアクセス権。
write_acl
C
ACL を書き込むためのアクセス権。つまり chmod コマンドを使用して ACL を変更することができます。
write_owner
o
ファイルの所有者またはグループを変更するためのアクセス権。つまり、ファイルに対して chown または chgrp コマンドを実行することができます。

ファイルの所有権を取得するためのアクセス権。または、ファイルのグループ所有権をユーザーが所属するグループに変更するためのアクセス権。ファイルまたはグループの所有権を任意のユーザーまたはグループに変更する場合は、PRIV_FILE_CHOWN 権限が必要です。

次の表に、ACL delete および delete_child の動作の追加詳細を示します。

表 7-3 ACL delete および delete_child アクセス権の動作

親ディレクトリのアクセス権
ターゲットオブジェクトのアクセス権
ACL は delete を許可
ACL は delete を拒否
未指定のアクセス権を削除
ACL は delete_child を許可
パーミット
パーミット
パーミット
ACL は delete_child を拒否
パーミット
拒否
拒否
ACL は writeexecute だけを許可
パーミット
パーミット
パーミット
ACL は writeexecute を拒否
パーミット
拒否
拒否

ZFS ACL セット

次の ACL の組み合わせを、個々のアクセス権を個別に設定するのではなく ACL セットで適用できます。次のような ACL セットが利用可能です。

ACL セット名
含まれる ACL アクセス権
full_set
すべてのアクセス権
modify_set
write_aclwrite_owner を除くすべてのアクセス権
read_set
read_dataread_attributes read_xattr、および read_acl
write_set
write_dataappend_datawrite_attributes 、および write_xattr

これらの ACL セットは事前に定義されたものであり、変更することはできません。

ACL 継承

ACL 継承を使用する目的は、親ディレクトリの既存のアクセス権ビットを考慮しながら、意図した ACL を新しく作成するファイルまたはディレクトリが継承できるようにすることです。

デフォルトでは、ACL は伝達されません。ディレクトリに非簡易 ACL を設定した場合でも、その ACL はそれ以降に作成されるディレクトリには継承されません。ACL を継承する場合は、ファイルまたはディレクトリにそのことを 指定する必要があります。

オプションの継承フラグについて、次の表で説明します。

表 7-4 ACL 継承フラグ

継承フラグ
継承フラグのコンパクト表現
説明
file_inherit
f
親ディレクトリの ACL をそのディレクトリのファイルにのみ継承します。
dir_inherit
d
親ディレクトリの ACL をそのディレクトリのサブディレクトリにのみ継承します。
inherit_only
i
親ディレクトリから ACL を継承しますが、新しく作成したファイルまたはサブディレクトリにのみ適用され、そのディレクトリ自体には適用されません。このフラグを使用する場合は、何を継承するかを指定するために、file_inherit フラグまたは dir_inherit フラグ、あるいはその両方を指定する必要があります。
no_propagate
n
親ディレクトリの ACL をそのディレクトリの第 1 レベルの内容にのみ継承します。第 2 レベル以降の内容には継承しません。このフラグを使用する場合は、何を継承するかを指定するために、file_inherit フラグまたは dir_inherit フラグ、あるいはその両方を指定する必要があります。
-
なし
アクセス権は付与されていません。
現在、次のフラグは、SMB クライアントまたはサーバーにのみ適用できます。
successful_access
S
正常にアクセスしたときに、アラームまたは監査記録を開始するかどうかを指定します。このフラグは監査またはアラームの ACE タイプで使用されます。
failed_access
F
アクセスに失敗したときに、アラームまたは監査記録を開始するかどうかを指定します。このフラグは監査またはアラームの ACE タイプで使用されます。
inherited
I
ACE が継承されたことを示します。

また、aclinherit ファイルシステムプロパティーを使用して、デフォルトの ACL 継承ポリシーをファイルシステムに設定することもできます。ポリシーの厳密度はプロパティーによって異なります。詳細については、次のセクションを参照してください。

ACL プロパティー

ZFS ファイルシステムには、ACL 継承の特定の動作と、ACL と chmod 操作との関連を判定する、次のプロパティーが含まれています。