Oracle® Solaris 11.2 での ZFS ファイルシステムの管理

印刷ビューの終了

更新: 2014 年 12 月
 
 

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

chmod コマンドを使用して、ZFS ファイルの ACL を変更できます。次の chmod 構文では、ACL を変更するために acl-specification を使って ACL の形式を指定しています。acl-specification の説明については、ACL を設定する構文の説明を参照してください。

  • ACL エントリを追加する

    • ユーザーの ACL エントリを追加する

      % chmod A+acl-specification filename
    • index-ID を使用して ACL エントリを追加する

      % chmod Aindex-ID+acl-specification filename

      この構文では、指定した index-ID の位置に新しい ACL エントリが挿入されます。

  • ACL エントリを置き換える

    % chmod A=acl-specification filename
    % chmod Aindex-ID=acl-specification filename
  • ACL エントリを削除する

    • index-ID を使用して ACL エントリを削除する

      % chmod Aindex-ID- filename
    • ユーザーを使用して ACL エントリを削除する

      % chmod A-acl-specification filename
    • 非簡易 ACL をファイルからすべて削除する

      % chmod A- filename

ls – v コマンドを使用することで、詳細な ACL 情報が表示されます。例:

# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

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

使用例 7-1  ZFS ファイルの簡易 ACL を変更する

このセクションでは、従来の UNIX エントリ、ユーザー、グループ、およびその他のみが ACL に含まれることを意味する簡易 ACL の設定および表示の例を示します。

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

# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

次の例では、write_data アクセス権が group@ に付与されます。

# chmod A1=group@:read_data/write_data:allow file.1
# ls -v file.1
-rw-rw-r--   1 root     root      206695 Jul 20 13:43 file.1
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/write_data:allow
2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

次の例では、permissions on file.1 へのアクセス権の設定が 644 に戻されます。

# chmod 644 file.1
# ls -v file.1
-rw-r--r--   1 root     root      206695 Jul 20 13:43 file.1
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow
使用例 7-2  ZFS ファイルに非簡易 ACL を設定する

このセクションでは、非簡易 ACL を設定して表示する例を紹介します。

次の例では、read_data/execute アクセス権が、test.dir ディレクトリのユーザー joe に追加されます。

# chmod A+user:joe:read_data/execute:allow test.dir
# ls -dv test.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:23 test.dir
0:user:joe:list_directory/read_data/execute:allow
1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/read_xattr/write_xattr/execute/delete_child
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

次の例では、read_data/execute アクセス権がユーザー joe から削除されます。

# chmod A0- test.dir
# ls -dv test.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:23 test.dir
0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/read_xattr/write_xattr/execute/delete_child
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
使用例 7-3  ACL を使用して ZFS ファイルのアクセス権を操作する

次の ACL の例では、ACL を設定してから、ファイルまたはディレクトリのアクセス権ビットを変更するまでの操作を説明します。

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

# ls -v file.2
-rw-r--r--   1 root     root        2693 Jul 20 14:26 file.2
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

次の例では、ACL allow アクセス権が everyone@ から削除されます。

# chmod A2- file.2
# ls -v file.2
-rw-r-----   1 root     root        2693 Jul 20 14:26 file.2
0:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow

この出力では、ファイルのアクセス権ビットが 644 から 640 に再設定されています。everyone@ の読み取りアクセス権は、everyone@ の ACL 許可アクセス権が削除されるときに、ファイルのアクセス権ビットから事実上削除されています。

次の例では、既存の ACL が everyone@read_data/write_data アクセス権に置き換わります。

# chmod A=everyone@:read_data/write_data:allow file.3
# ls -v file.3
-rw-rw-rw-   1 root     root        2440 Jul 20 14:28 file.3
0:everyone@:read_data/write_data:allow

この出力では、chmod 構文を使って、owner@、group@、および everyone@ が読み取りまたは書き込みできるように、既存の ACL を read_data/write_data:allow アクセス権に事実上置き換えています。このモデルでは、everyone@ を使って、すべてのユーザーまたはグループへのアクセス権を指定しています。所有者とグループのアクセス権をオーバーライドする owner@group@ の ACL エントリがないので、アクセス権ビットは 666 に設定されます。

次の例では、既存の ACL がユーザー joe の読み取りアクセス権に置き換わります。

# chmod A=user:joe:read_data:allow file.3
# ls -v file.3
----------+  1 root     root        2440 Jul 20 14:28 file.3
0:user:joe:read_data:allow

この出力では、従来のファイルアクセス権コンポーネントを表す owner@group@、または everyone@ の ACL エントリがないので、ファイルアクセス権は 000 になります。ファイルの所有者は、次のようにアクセス権 (および ACL) を再設定することで、この問題を解決できます。

# chmod 655 file.3
# ls -v file.3
-rw-r-xr-x   1 root     root        2440 Jul 20 14:28 file.3
0:owner@:execute:deny
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/execute/read_attributes/read_acl
/synchronize:allow
3:everyone@:read_data/read_xattr/execute/read_attributes/read_acl
/synchronize:allow
使用例 7-4  ZFS ファイルの簡易 ACL を復元する

chmod コマンドを使用して、ファイルまたはディレクトリのすべての非簡易 ACL を削除できます。

次の例では、2 つの非簡易 ACL が test5.dir にあります。

# ls -dv test5.dir
drwxr-xr-x+  2 root     root           2 Jul 20 14:32 test5.dir
0:user:lp:read_data:file_inherit:deny
1:user:joe:read_data:file_inherit:deny
2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/read_xattr/write_xattr/execute/delete_child
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
3:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
4:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow

次の例では、ユーザー joelp の非簡易 ACL が削除されます。残りの ACL には、owner@group@、および everyone@ のデフォルト値が含まれています。

# chmod A- test5.dir
# ls -dv test5.dir
drwxr-xr-x   2 root     root           2 Jul 20 14:32 test5.dir
0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory
/append_data/read_xattr/write_xattr/execute/delete_child
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
1:group@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes
/read_acl/synchronize:allow
使用例 7-5  ACL セットを ZFS ファイルに適用する

ACL セットを利用すれば、ACL アクセス権を個別に適用する必要がなくなります。セットの説明については、ZFS ACL セットを参照してください。

たとえば、次のように read_set を適用できます。

# chmod A+user:bob:read_set:allow file.1
# ls -v file.1
-r--r--r--+  1 root     root      206695 Jul 20 13:43 file.1
0:user:bob:read_data/read_xattr/read_attributes/read_acl:allow
1:owner@:read_data/read_xattr/write_xattr/read_attributes
/write_attributes/read_acl/write_acl/write_owner/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow

write_setread_set は次のように適用できます。

# chmod A+user:bob:read_set/write_set:allow file.2
# ls -v file.2
-rw-r--r--+  1 root     root        2693 Jul 20 14:26 file.2
0:user:bob:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl:allow
1:owner@:read_data/write_data/append_data/read_xattr/write_xattr
/read_attributes/write_attributes/read_acl/write_acl/write_owner
/synchronize:allow
2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize
:allow