'\" te .\" Copyright 1989 AT&T .\" Copyright (c) 1992, X/Open Company Limited All Rights Reserved .\" Portions Copyright (c) 2008, 2015, Oracle and/or its affiliates.All rights reserved. .\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html. This notice shall appear on any product containing this material. .TH chmod 1 "2015 年 7 月 23 日" "SunOS 5.11" "ユーザーコマンド" .SH 名前 chmod \- ファイルのアクセス権モードの変更 .SH 形式 .LP .nf \fBchmod\fR [\fB-fR\fR] \fIabsolute-mode\fR \fIfile\fR... .fi .LP .nf \fBchmod\fR [\fB-fR\fR] \fIsymbolic-mode-list\fR \fIfile\fR... .fi .LP .nf \fBchmod\fR [\fB-fR\fR] \fIacl_operation\fR \fIfile\fR... .fi .LP .nf \fBchmod\fR [\fB-fR\fR] [\fB-@\fR \fInamed_attribute\fR]...\fIattribute_specification_list\fR \fIfile\fR... .fi .SH 機能説明 .sp .LP \fBchmod\fR ユーティリティーはファイルモードの変更や割り当てを行います。 .sp .LP \fBchmod\fR を使用すると、ファイルやディレクトリのアクセス制御リスト (ACL) の変更や、通常のファイル、ディレクトリ、および不透明な拡張属性ファイルのブール型読み書きシステム属性の変更も行えます。 .SS "絶対モード" .sp .LP 絶対モードのコマンド行は、次の形式で指定します。 .sp .LP \fBchmod\fR [\fIoptions\fR] \fIabsolute-mode\fR \fIfile\fR . . . .sp .LP ここで、\fIabsolute-mode\fR は、以下のように定義されている 8 進数 \fInnnn\fR を使用して指定します。 .sp .ne 2 .mk .na \fB\fIn\fR\fR .ad .sp .6 .RS 4n \fB0\fR から \fB7\fR の数字を表します。絶対モードは、以下のモードのいくつかの論理和をとったものです。 .sp .ne 2 .mk .na \fB\fB4000\fR\fR .ad .sp .6 .RS 4n 実行時にユーザー \fBID\fR を設定します。 .RE .sp .ne 2 .mk .na \fB\fB20\fR\fI # \fR\fB0\fR\fR .ad .sp .6 .RS 4n \fI#\fR が \fB7\fR、\fB5\fR、\fB3\fR または \fB1\fR のとき、実行時にグループ \fBID\fR を設定します。 .sp \fI#\fR が \fB6\fR、\fB4\fR、\fB2\fR または \fB0\fR のとき、強制ロックを許可します。 .sp ディレクトリに対して使用されると、グループ ID の継承については BSD のセマンティクスに基づいてファイルが作成されます。このオプションを使用すると、そのディレクトリ中に作成されるファイルやサブディレクトリは、カレントプロセスのグループ ID ではなく、ディレクトリのグループ ID を引き継ぎます。ディレクトリの場合、setgid ビットをセットまたはクリアできるのはシンボリックモードを使用する場合 (それぞれ \fBg+s\fR または \fBg-s\fR) だけです。 .RE .sp .ne 2 .mk .na \fB\fB1000\fR\fR .ad .sp .6 .RS 4n スティッキビットをオンにします。\fBchmod\fR(2) 参照。 .RE .sp .ne 2 .mk .na \fB\fB0400\fR\fR .ad .sp .6 .RS 4n 所有者による読み取りを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0200\fR\fR .ad .sp .6 .RS 4n 所有者による書き込みを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0100\fR\fR .ad .sp .6 .RS 4n 所有者による実行 (ディレクトリ内での検索) を許可します。 .RE .sp .ne 2 .mk .na \fB\fB0700\fR\fR .ad .sp .6 .RS 4n 所有者による読み取り、書き込み、実行 (検索) を許可します。 .RE .sp .ne 2 .mk .na \fB\fB0040\fR\fR .ad .sp .6 .RS 4n グループによる読み取りを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0020\fR\fR .ad .sp .6 .RS 4n グループによる書き込みを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0010\fR\fR .ad .sp .6 .RS 4n グループによる実行 (ディレクトリ内での検索) を許可します。 .RE .sp .ne 2 .mk .na \fB\fB0070\fR\fR .ad .sp .6 .RS 4n グループによる読み取り、書き込み、実行 (検索) を許可します。 .RE .sp .ne 2 .mk .na \fB\fB0004\fR\fR .ad .sp .6 .RS 4n その他のユーザーによる読み取りを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0002\fR\fR .ad .sp .6 .RS 4n その他のユーザーによる書き込みを許可します。 .RE .sp .ne 2 .mk .na \fB\fB0001\fR\fR .ad .sp .6 .RS 4n その他のユーザーによる実行 (ディレクトリ内での検索) を許可します。 .RE .sp .ne 2 .mk .na \fB\fB0007\fR\fR .ad .sp .6 .RS 4n その他のユーザーによる読み取り、書き込み、実行 (検索) を許可します。 .RE .RE .sp .LP ディレクトリに対して、絶対モード (chmod 20#0 ...) では \fBsetgid\fR ビットのセットやクリアは行えません。シンボリックモードで '\fBchmod\fR \fBg+s\fR ...' (または '\fBchmod\fR \fBg-s\fR ...') を使って行う必要があります。 .SS "シンボリックモード" .sp .LP シンボリックモードのコマンド行は、次の書式で指定します。 .sp .LP \fBchmod\fR [\fIoptions\fR] \fIsymbolic-mode-list\fR \fIfile\fR . . . .sp .LP ここで、\fIsymbolic-mode-list\fR は、次の形式のシンボリックモードの式をコンマで区切ったリスト (スペースを含めない) です。 .sp .LP [\fBwho\fR] \fIoperator\fR [\fIpermissions\fR] .sp .LP 処理は、記述された順序で実行されます。1 つの演算子 (\fIoperator\fR) のあとに permissions として複数のアクセス権文字を指定すると、その演算子で示された処理が同時に行われます。 .sp .ne 2 .mk .na \fB\fBwho\fR\fR .ad .sp .6 .RS 4n \fBu\fR、\fBg\fR、\fBo\fR、\fBa\fR の文字の 1 つ以上の組み合わせ (または省略) で、誰のアクセス権が変更または割り当てられるのかを指定します。 .sp .ne 2 .mk .na \fB\fBu\fR\fR .ad .sp .6 .RS 4n ユーザーのアクセス権 .RE .sp .ne 2 .mk .na \fB\fBg\fR\fR .ad .sp .6 .RS 4n グループのアクセス権 .RE .sp .ne 2 .mk .na \fB\fBo\fR\fR .ad .sp .6 .RS 4n その他のアクセス権 .RE .sp .ne 2 .mk .na \fB\fBa\fR\fR .ad .sp .6 .RS 4n 全アクセス権 (ユーザー、グループ、その他) .RE \fBwho\fR が省略されると、デフォルトとして \fBa\fR と解釈されますが、ファイルモード作成マスク (詳細は \fBsh\fR(1) または \fBcsh\fR(1) の \fBumask\fR の項を参照) の設定値は考慮されます。\fBwho\fR が省略されると、\fBchmod\fR はユーザーマスクの制限を置き換えません。 .RE .sp .ne 2 .mk .na \fB\fIoperator\fR\fR .ad .sp .6 .RS 4n アクセス権をどのように変更するかを指定する演算子で、\fB+\fR、\fB-\fR、\fB=\fR のいずれかです。 .sp .ne 2 .mk .na \fB\fB+\fR\fR .ad .sp .6 .RS 4n アクセス権を付加します。 .sp \fIpermissions\fR を省略すると、何も付加されません。 .sp \fBwho\fR が省略されると、対応するビットがファイルモード生成マスク中にセットされている場合を除き、\fIpermissions\fR が示すファイルモードビットが付加されます。\fI\fR .sp \fBwho\fR が指定されていれば、\fIpermissions\fR が示すファイルモードビットが付加されます。 .RE .sp .ne 2 .mk .na \fB\fB-\fR\fR .ad .sp .6 .RS 4n アクセス権を除去します。 .sp \fIpermissions\fR を省略すると、何も行われません。 .sp \fBwho\fR が省略されると、対応するビットがファイルモード生成マスク中にセットされている場合を除き、\fIpermissions\fR が示すファイルモードビットをクリアします。\fI\fR .sp \fBwho\fR が指定されていれば、\fIpermissions\fR が示すファイルモードビットをクリアします。 .RE .sp .ne 2 .mk .na \fB\fB=\fR\fR .ad .sp .6 .RS 4n 指定されたアクセス権をそのまま割り当てます。 .sp \fBwho\fR が省略されると、すべてのファイルモードビットをクリアします。\fBwho\fR が指定されていれば、\fBwho\fR が示すファイルモードビットをクリアします。 .sp \fIpermissions\fR を省略すると、他には何も行われません。 .sp \fBwho\fR が省略されると、対応するビットがファイルモード生成マスク中にセットされている場合を除き、\fIpermissions\fR が示すファイルモードビットが付加されます。\fI\fR .sp \fBwho\fR が指定されていれば、\fIpermissions\fR が示すファイルモードビットが付加されます。 .RE \fB=\fR は、他のシンボリック演算子と違って、\fBwho\fR が示す他のすべてのビットをリセットしてしまうという絶対的な効果があります。 \fIpermission\fR の省略は、\fB=\fR を使用してすべてのアクセス権を除去するときのみ便利です。 .RE .sp .ne 2 .mk .na \fB\fIpermission\fR\fR .ad .sp .6 .RS 4n 以下の文字の適切な組み合わせで指定します。 .sp .ne 2 .mk .na \fB\fBl\fR\fR .ad .sp .6 .RS 4n 強制ロッキング .RE .sp .ne 2 .mk .na \fB\fBr\fR\fR .ad .sp .6 .RS 4n 読み取り権 .RE .sp .ne 2 .mk .na \fB\fBs\fR\fR .ad .sp .6 .RS 4n ユーザーまたはセットグループ ID .RE .sp .ne 2 .mk .na \fB\fBt\fR\fR .ad .sp .6 .RS 4n スティッキビット .RE .sp .ne 2 .mk .na \fB\fBw\fR\fR .ad .sp .6 .RS 4n 書き込み権 .RE .sp .ne 2 .mk .na \fB\fBx\fR\fR .ad .sp .6 .RS 4n 実行権 .RE .sp .ne 2 .mk .na \fB\fBX\fR \fR .ad .sp .6 .RS 4n 実行権 (ファイルがディレクトリの場合、または他のユーザークラスのいずれかに実行権がある場合) .RE .sp .ne 2 .mk .na \fB\fBu\fR、\fBg\fR、\fBo\fR\fR .ad .sp .6 .RS 4n \fIpermission\fR がそれぞれ現在のユーザー、グループ、 またはその他のモードから除去されることを意味します。 .RE ファイルへのアクセス権は、ユーザー ID 番号 (UID) およびグループ ID 番号 (GID) によって異なります。アクセス権は、 3 つのユーザーモードがそれぞれ 3 つの文字を持つように記述されます。 .sp .sp .TS tab(); lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) lw(1.83i) . ユーザーグループその他 rwxrwxrwx .TE この例 (ユーザー、グループ、その他が、当該ファイルの読み取り、書き込み、 実行権を持っている) は、アクセス権を与える際の 2 つのカテゴリを示しています。1 つはアクセスクラス、もう 1 つはアクセス権そのものです。 .sp 文字 \fBs\fR は、\fBu\fR または \fBg\fR と一緒に指定したときのみ有効です。また、\fBt\fR は \fBu\fR とのみ指定できます。 .sp 強制的なファイルおよびレコードのロック (\fBl\fR) は、プログラムがアクセスしている間、そのファイルの読み込み、書き込み権がロックされることを意味します。 .sp セットグループ ID ビットがオンになっているディレクトリは、\fB\&'ls –ld'\fR で \fB-----s---\fR または \fB-----l---\fR が出力されることで判定できますが、このようなディレクトリ中で ファイルやサブディレクトリを生成する際には、その親ディレクトリのセットグループ ID が与えられます。カレントプロセスのセットグループ ID ではありません。 .sp グループ実行権を与えて、同時に実行時にファイルをロックすることはできません。さらに、セットグループ ID ビットをオンにして同時に実行時にファイルをロックすることはできません。したがって、以下の例は無効であり、エラーメッセージが出力されます。 .sp .in +2 .nf chmod g+x,+l \fIfile\fR chmod g+s,+l \fIfile\fR .fi .in -2 .sp ファイルまたはディレクトリの所有者 (またはスーパーユーザー) だけがそのファイルまたはディレクトリのモードを変更できます。スーパーユーザーだけがディレクトリでないファイルのスティッキビットを設定できます。スーパーユーザーでなければ、\fBchmod\fR はスティッキビットをマスクしますが、エラーは返しません。ファイルのセットグループ ID ビットをオンにするには、自分自身のグループ ID がファイルのそれと一致していて、さらにグループ実行権が設定されていなければなりません。 .RE .SS "ACL 操作" .sp .LP アクセス制御リスト (ACL) とは、アクセス制御エントリ (ACE) のリストのことで、各エントリに特定クラスのユーザーのアクセス権が定義されています。ACE のリストには、ゼロから始まる番号が付けられています。ACL 内での ACE の位置は \fIindex\fR と呼ばれます。このインデックスは、次に示す多くの \fBchmod\fR コマンドの引数として使用されます。ACL や ACE の詳細については、\fI『Managing ZFS File Systems in Oracle Solaris 11.3』\fRを参照してください。 .sp .LP \fBchmod\fR を含む Oracle Solaris ユーティリティーは、NFSv4 と新しい POSIX ドラフト ACL 仕様の両方をサポートします。これらの仕様に、\fIacl_specification\fR フィールドの構文と意味が詳しく説明されています。これら 2 つの ACL 仕様については、次の各サブセクションで説明します。 .sp .LP ACL 操作のコマンド行は、次の形式で指定します。 .sp .in +2 .nf chmod [\fIoptions\fR] A[\fIindex\fR]- \fIfile\fR ... chmod [\fIoptions\fR] A-\fIacl_specification\fR \fIfile\fR ... chmod [\fIoptions\fR] A[\fIindex\fR]{+|=}\fIacl_specification\fR \fIfile\fR ... .fi .in -2 .sp .sp .LP ここで、\fIacl_specification\fR は、次の形式のコンマ区切りのリスト (スペースを含まない) です: .sp .ne 2 .mk .na \fB\fBA\fR[\fIindex\fR]+\fIacl_specification\fR\fR .ad .sp .6 .RS 4n \fIacl_specification\fR に指定されたアクセス制御エントリ (ACE) を、ファイルの ACL の先頭に追加します。ファイルシステムによっては、ファイルへの適用時に ACL が並べ替えられることがあります。オプションの \fIindex\fR が指定された場合、\fIindex\fR の前に新しい ACE が挿入されます。 .RE .sp .ne 2 .mk .na \fB\fBA-\fR\fR .ad .sp .6 .RS 4n ファイル上の現在の ACL に対するすべての ACE を削除し、そのファイルの現在のモードだけを表現した新しい ACL で現在の ACL を置き換えます。 .RE .sp .ne 2 .mk .na \fB\fBA\fIindex\fR\fR-\fR .ad .sp .6 .RS 4n \fIindex\fR の番号で指定された ACE を削除します。 .RE .sp .ne 2 .mk .na \fB\fBA-\fIacl_specification\fR\fR\fR .ad .br .na \fB\fR .ad .sp .6 .RS 4n \fIacl_specification\fR で指定された ACE が現在のファイルの ACL 内に存在している場合、そのエントリを削除します。 .RE .sp .ne 2 .mk .na \fB\fBA=\fIacl_specification\fR\fR\fR .ad .sp .6 .RS 4n ファイルの ACL 全体を \fIacl_specification\fR で置き換えます。 .RE .sp .ne 2 .mk .na \fB\fBA[\fIindex\fR]=\fIacl_specification\fR\fR\fR .ad .sp .6 .RS 4n ファイル上の現在の ACL 内で、特定のインデックス番号以降の ACE を置き換えます。ACE が複数指定された場合、\fIacl_specification\fR 内の後続の各 ACE によって、現在の ACL 内の対応する ACE が置き換えられます。 .RE .SS "POSIX ドラフト ACL 仕様 (UFS でサポート)" .sp .LP UFS でサポートされる POSIX ドラフト ACL は、次のようにコロン (\fB:\fR) で区切られたフィールドとして指定されます。 .sp .ne 2 .mk .na \fBuser::perms\fR .ad .sp .6 .RS 4n ファイル所有者のアクセス権。 .RE .sp .ne 2 .mk .na \fBuser:\fIusername\fR:perms\fR .ad .sp .6 .RS 4n 特定のユーザーのアクセス権。 .RE .sp .ne 2 .mk .na \fBgroup::perms\fR .ad .sp .6 .RS 4n ファイルのグループメンバーのアクセス権。 .RE .sp .ne 2 .mk .na \fBgroup:\fIgroupname:\fRperms\fR .ad .sp .6 .RS 4n 特定のグループのアクセス権。 .RE .sp .ne 2 .mk .na \fBother::perms\fR .ad .sp .6 .RS 4n ファイル所有者やファイルグループのメンバー以外のユーザーのアクセス権。 .RE .sp .ne 2 .mk .na \fBmask:perms\fR .ad .sp .6 .RS 4n ACL マスク。マスクエントリは、ユーザー (所有者以外) とグループに許可される最大のアクセス権を示します。 .RE .sp .ne 2 .mk .na \fBdefault:user::perms\fR .ad .sp .6 .RS 4n 所有者のデフォルトアクセス権。 .RE .sp .ne 2 .mk .na \fBdefault:user:\fIusername\fR:perms\fR .ad .sp .6 .RS 4n 特定のユーザーのデフォルトアクセス権。 .RE .sp .ne 2 .mk .na \fBdefault:group::perms\fR .ad .sp .6 .RS 4n ファイルのグループメンバーのデフォルトアクセス権。 .RE .sp .ne 2 .mk .na \fBdefault:group:\fIgroupname\fR:perms\fR .ad .sp .6 .RS 4n 特定のグループのデフォルトアクセス権。 .RE .sp .ne 2 .mk .na \fBdefault:other:perms\fR .ad .sp .6 .RS 4n ファイルの所有者やファイルグループのメンバー以外のユーザーのデフォルトアクセス権。 .RE .sp .ne 2 .mk .na \fBdefault:mask:perms\fR .ad .sp .6 .RS 4n デフォルトの ACL マスク。 .RE .sp .LP 前述の指定方法を使えば、ACL を次のように指定できます。 .sp .in +2 .nf user:tom:rw-,mask:rwx,group:staff:r-x .fi .in -2 .sp .SS "NFSv4 ACL 仕様 (NFSv4 と ZFS でサポート)" .sp .LP NFSv4 ACL は、より豊富な ACL セマンティックを提供します。これらは、許可エントリと拒否エントリの両方を提供するほか、より細粒度の高いアクセス権と拡張された継承制御を提供します。 .sp .LP NFSv4 ACL は、次のようにコロン (\fB:\fR) で区切られたフィールドとして指定されます。 .sp .ne 2 .mk .na \fBowner@:[:inheritance flags]:\fR .ad .sp .6 .RS 4n ファイルの所有者のアクセス権。 .RE .sp .ne 2 .mk .na \fBgroup@:[:inheritance flags]:\fR .ad .sp .6 .RS 4n ファイルのグループメンバーのアクセス権。 .RE .sp .ne 2 .mk .na \fBeveryone@:[:inheritance flags]:\fR .ad .sp .6 .RS 4n ファイルの所有者とグループメンバーを含むすべてのユーザーのアクセス権。 .RE .sp .ne 2 .mk .na \fBuser::[:inheritance flags]:\fR .ad .sp .6 .RS 4n 特定のユーザーのアクセス権。 .RE .sp .ne 2 .mk .na \fBusersid::[:inheritance flags]: \fR .ad .sp .6 .RS 4n 特定のユーザーのアクセス権。ただし、ユーザーは SID で指定されます。 .RE .sp .ne 2 .mk .na \fBgroup::[:inheritance flags]:\fR .ad .sp .6 .RS 4n 特定のグループのアクセス権。 .RE .sp .ne 2 .mk .na \fBgroupsid::[:inheritance flags]:\fR .ad .sp .6 .RS 4n 特定のグループのアクセス権。ただし、グループは SID で指定されます。 .RE .sp .ne 2 .mk .na \fBsid::[:inheritance flags]:\fR .ad .sp .6 .RS 4n 特定の SID のアクセス権。ただし、この SID はユーザーまたはグループのどちらでもかまいません。 .RE .sp .LP アクセス権を指定する際には、異なる 3 つの \fBchmod\fR ACL 形式を使用できます。 冗長、コンパクト、定位置です。冗長形式では、単語を使ってアクセス権を指定し、複数のアクセス権はスラッシュ (\fB/\fR) 文字で区切ります。コンパクト形式ではアクセス権文字を使用し、定位置形式ではアクセス権文字とハイフン (\fB-\fR) を使用します。ハイフンはアクセス権がないことを示します。 .sp .LP 冗長モード用のアクセス権とコンパクトモードおよび定位置モード用の短縮形について、次に説明します。短縮形は括弧内に示しています。 .sp .ne 2 .mk .na \fBread_data (\fBr\fR)\fR .ad .sp .6 .RS 4n ファイルのデータを読み取る権限。 .RE .sp .ne 2 .mk .na \fBlist_directory (\fBr\fR)\fR .ad .sp .6 .RS 4n ディレクトリの内容を表示するためのアクセス権。 .RE .sp .ne 2 .mk .na \fBwrite_data (\fBw\fR)\fR .ad .sp .6 .RS 4n ファイルのデータを変更する権限。ファイルのオフセット範囲内の任意の場所。 .RE .sp .ne 2 .mk .na \fBadd_file (\fBw\fR)\fR .ad .sp .6 .RS 4n ディレクトリに新しいファイルを追加するためのアクセス権。 .RE .sp .ne 2 .mk .na \fBappend_data (\fBp\fR)\fR .ad .sp .6 .RS 4n ファイルのデータを変更する機能。ただし、変更できるのは EOF 以降のみです。 .sp 現在、この権限はサポートされていません。 .RE .sp .ne 2 .mk .na \fBadd_subdirectory (\fBp\fR)\fR .ad .sp .6 .RS 4n ディレクトリにサブディレクトリを作成する権限。 .RE .sp .ne 2 .mk .na \fBread_xattr (\fBR\fR)\fR .ad .sp .6 .RS 4n ファイルの拡張属性を読み取る機能。 .RE .sp .ne 2 .mk .na \fBwrite_xattr (\fBW\fR)\fR .ad .sp .6 .RS 4n 拡張属性を作成したり拡張属性ディレクトリに書き込んだりする機能。 .RE .sp .ne 2 .mk .na \fBexecute (\fBx\fR)\fR .ad .sp .6 .RS 4n ファイルを実行する権限。 .RE .sp .ne 2 .mk .na \fBread_attributes (\fBa\fR)\fR .ad .sp .6 .RS 4n ファイルの基本属性 (ACL 以外) を読み取る機能。 .RE .sp .ne 2 .mk .na \fBwrite_attributes (\fBA\fR)\fR .ad .sp .6 .RS 4n ファイルまたはディレクトリに関連付けられた時間を任意の値に変更するためのアクセス権。 .RE .sp .ne 2 .mk .na \fBdelete (\fBd\fR)\fR .ad .sp .6 .RS 4n ファイルを削除するためのアクセス権。 .sp 削除アクセス権の動作の詳細については、\fI『Managing ZFS File Systems in Oracle Solaris 11.3』\fRを参照してください。 .RE .sp .ne 2 .mk .na \fBdelete_child (\fBD\fR)\fR .ad .sp .6 .RS 4n ディレクトリ内のファイルを削除する権限。 .sp 削除アクセス権の動作の詳細については、\fI『Managing ZFS File Systems in Oracle Solaris 11.3』\fRを参照してください。 .RE .sp .ne 2 .mk .na \fBread_acl (\fBc\fR)\fR .ad .sp .6 .RS 4n ファイルの ACL を読み取る権限。 .RE .sp .ne 2 .mk .na \fBwrite_acl (\fBC\fR)\fR .ad .sp .6 .RS 4n ファイルの ACL を書き込む権限。 .RE .sp .ne 2 .mk .na \fBwrite_owner (\fBo\fR)\fR .ad .sp .6 .RS 4n ファイルの所有者を変更する権限。 .RE .sp .ne 2 .mk .na \fBsynchronize (\fBs\fR)\fR .ad .sp .6 .RS 4n 同期付きの読み取り権と書き込み権を使ってサーバー上のファイルにローカルアクセスする権限。 .sp 現在、この権限はサポートされていません。 .RE .sp .LP コンパクト ACL 形式では、14 個の一意の文字を使ってアクセス権を指定します。 .sp .LP 定位置 ACL 形式では、\fBls \fR\fB-V\fR の形式に似た定位置引数として、アクセス権を指定します。ハイフン (\fB-\fR) は、その位置のアクセス権が許可されていないことを示しますが、このハイフンは省略可能であり、指定する必要があるのは必須文字だけです。 .sp .LP 前述の文字は、定位置表記で指定する順番に並んでいます。 .sp .LP これらの文字を使えば、アクセス権を次のように指定できます。 .sp .in +2 .nf rwx--D-------- .fi .in -2 .sp .sp .LP ハイフンを削除すれば、文字列が次のようにコンパクトになります。 .sp .in +2 .nf rwxD .fi .in -2 .sp .sp .LP いくつかの特殊アクセス権セットや別名もサポートされています。次のアクセス権セットの使用方法は、冗長アクセス権を指定する方法と同じです。 .sp .ne 2 .mk .na \fB\fBfull_set\fR\fR .ad .sp .6 .RS 4n すべてのアクセス権。 .RE .sp .ne 2 .mk .na \fB\fBmodify_set\fR\fR .ad .sp .6 .RS 4n \fBwrite_acl\fR と \fBwrite_owner\fR を除くすべてのアクセス権。 .RE .sp .ne 2 .mk .na \fB\fBread_set\fR\fR .ad .sp .6 .RS 4n \fBread_data、read_acl、read_attributes\fR、および \fB read_xattr\fR。 .RE .sp .ne 2 .mk .na \fB\fBwrite_set\fR\fR .ad .sp .6 .RS 4n \fBwrite_data、append_data、write_attributes\fR、および \fBwrite_xattr\fR .RE .sp .LP 省略可能な継承フラグの指定形式は 3 つあります。最初の形式では、単語を使ってさまざまな継承フラグを指定します。複数の継承フラグはスラッシュ (\fB/\fR) 文字で区切ります。 .sp .ne 2 .mk .na \fBfile_inherit (\fBf\fR)\fR .ad .sp .6 .RS 4n 新たに作成されたすべてのファイルに継承します。 .RE .sp .ne 2 .mk .na \fBdir_inherit (\fBd\fR)\fR .ad .sp .6 .RS 4n 新たに作成されたすべてのディレクトリに継承します。 .RE .sp .ne 2 .mk .na \fBinherit_only (\fBi\fR)\fR .ad .sp .6 .RS 4n ディレクトリに対して指定された場合、そのディレクトリには適用せず、新たに作成されたファイルやディレクトリだけに適用します。このフラグを使用する際には、\fBfile_inherit\fR または \fBdir_inherit\fR、あるいはその両方も指定する必要があります。 .RE .sp .ne 2 .mk .na \fBno_propagate (\fBn\fR)\fR .ad .sp .6 .RS 4n ディレクトリ内のオブジェクトには ACL エントリを継承しますが、レベルが 1 つ下がった時点でその継承を停止すべきであることを示します。このフラグを使用する際には、\fBfile_inherit\fR または \fBdir_inherit\fR、あるいはその両方も指定する必要があります。 .RE .sp .LP 前述の継承フラグは、コンパクト形式で指定することもでき、また、\fBls\fR \fB-V\fR の形式に似た定位置引数として指定することもできます。定位置 ACL 形式でのハイフン文字は、その位置の継承フラグが指定されていないことを示します。 .sp .LP これらの文字を使って継承フラグを指定する場合、次のいずれの同等の方法を使ってもかまいません。 .sp .in +2 .nf file_inherit/dir_inherit/no_propagate .fi .in -2 .sp .sp .in +2 .nf fd-n-- .fi .in -2 .sp .sp .in +2 .nf fdn .fi .in -2 .sp .sp .LP この継承モデルを使えば、ACL エントリを次のように指定できます。 .sp .in +2 .nf user:tom:read_data/write_data/read_attributes:file_inherit:allow user:fred:read_data:file_inherit/dir_inherit:deny user:bob:read_data:allow .fi .in -2 .sp .SS "属性操作" .sp .LP 属性操作のコマンド行は、次の形式で指定します。 .sp .in +2 .nf chmod [\fIoptions\fR] \fIattribute_specification_list\fR \fIfile\fR ... .fi .in -2 .sp .sp .LP \fIattribute_specification_list\fR は、文字 \fBS\fR とそれに続く 1 つ以上の \fIattribute_specifications\fR のコンマ区切りのリストです。各 \fIattribute_specification \fR の形式を次に示します。 .sp .in +2 .nf [\fIoperator\fR]\fIattribute_specifier\fR .fi .in -2 .sp .sp .LP \fIoperator\fR は次のいずれかです。 .sp .ne 2 .mk .na \fB\fB+\fR\fR .ad .sp .6 .RS 4n 関連する \fIattribute_specifier \fR で指定された各属性は、\fIattribute_specifier \fR で指定された値に一致するように調整されます。 .RE .sp .ne 2 .mk .na \fB\fB-\fR\fR .ad .sp .6 .RS 4n 関連する \fIattribute_specifier \fR で指定された各属性は、\fIattribute_specifier \fR で指定された値の逆に一致するように調整されます。 .RE .sp .ne 2 .mk .na \fB\fB=\fR\fR .ad .sp .6 .RS 4n 関連する \fIattribute_specifier \fR で指定された各属性は、\fIattribute_specifier \fR で指定された値に一致するように調整されます。\fIattribute_specifier\fR で指定されていない、現在のファイルに関連付けられたブール型の読み書き拡張システム属性は、クリアされます。 .RE .sp .LP \fI attribute_specification\fR で \fIoperator\fR が指定されていない場合、\fBchmod\fR は \fB+\fR が指定されているかのように動作します。 .sp .LP \fIattribute_specifier\fR は、次のいずれかの形式になります。 .sp .ne 2 .mk .na \fB\fBa\fR\fR .ad .sp .6 .RS 4n 現在のファイルに関連付けられているすべてのブール型読み書き拡張システム属性を設定します。 .RE .sp .ne 2 .mk .na \fB\fBc[\fIcompact_attribute_list\fR] \fR\fR .ad .br .na \fB\fBc'{'\fIcompact_attribute_list\fR'}' \fR\fR .ad .sp .6 .RS 4n \fIcompact_attribute_list\fR で識別される各ブール型読み書き拡張システム属性を設定します。 .RE .sp .ne 2 .mk .na \fB\fBv[\fIverbose_attribute_setting\fR] \fR\fR .ad .br .na \fB\fBv['{'\fIverbose_attribute_setting_list\fR'}'] \fR\fR .ad .sp .6 .RS 4n \fIverbose_attribute_setting\fR で識別される各ブール型読み書き拡張システム属性を設定します。 .RE .sp .LP \fIcompact_attribute_list\fR は、このセクションで後述する\fB属性名と略字\fRのリストに記載されている、隣接するゼロ個以上の属性の略語のリストです。\fI compact_attribute_list\fR には、任意の数のハイフン (\fB-\fR) を含めることができます。これらは無視されます。 .sp .LP \fIverbose_attribute_setting\fR は、このセクションで後述する\fB属性名と略字\fRのリストに記載されている属性名です。必要に応じて、その直前に \fBno\fR を指定することもできます。属性名を \fBno\fR なしで指定する場合は、その属性が設定されます。それ以外の場合は、属性がクリアされます。 .sp .LP \fIverbose_attribute_setting_list\fR は、ゼロ個以上の \fIverbose_attribute_setting\fR のコンマ区切りのリストです。 .sp .LP 1 つのファイルに指定された複数の操作は累積され、そのすべてがファイルオペランドに対して 1 つの属性設定操作として設定されます。属性が \fIattribute_specification_list\fR 内で複数回指定されている場合、最後に指定された操作が適用されます。 .sp .LP 次に\fB属性名と略字\fRのリストを示します。 .sp .ne 2 .mk .na \fB\fB属性名\fR\fR .ad .sp .6 .RS 4n \fB略字\fR .RE .sp .ne 2 .mk .na \fB\fBhidden\fR\fR .ad .sp .6 .RS 4n \fBH\fR .RE .sp .ne 2 .mk .na \fB\fBsparse\fR\fR .ad .sp .6 .RS 4n \fBs\fR .RE .sp .ne 2 .mk .na \fB\fBsystem\fR\fR .ad .sp .6 .RS 4n \fBS\fR .RE .sp .ne 2 .mk .na \fB\fBreadonly\fR\fR .ad .sp .6 .RS 4n \fBR\fR .RE .sp .ne 2 .mk .na \fB\fBarchive\fR\fR .ad .sp .6 .RS 4n \fBA\fR .RE .sp .ne 2 .mk .na \fB\fBnounlink\fR\fR .ad .sp .6 .RS 4n \fBu\fR .RE .sp .ne 2 .mk .na \fB\fBimmutable\fR\fR .ad .sp .6 .RS 4n \fBi\fR .RE .sp .ne 2 .mk .na \fB\fBappendonly\fR\fR .ad .sp .6 .RS 4n \fBa\fR .RE .sp .ne 2 .mk .na \fB\fBnodump\fR\fR .ad .sp .6 .RS 4n \fBd\fR .RE .sp .ne 2 .mk .na \fB\fBav_quarantined\fR\fR .ad .sp .6 .RS 4n \fBq\fR .RE .sp .ne 2 .mk .na \fB\fBav_modified\fR\fR .ad .sp .6 .RS 4n \fBm\fR .RE .sp .ne 2 .mk .na \fBsensitive\fR .ad .sp .6 .RS 4n \fBT\fR .RE .SH オプション .sp .LP サポートしているオプションは、次のとおりです。 .sp .ne 2 .mk .na \fB\fB-f\fR\fR .ad .sp .6 .RS 4n 強制。\fBchmod\fR はファイルモードの変更に失敗しても何もしません。 .RE .sp .ne 2 .mk .na \fB\fB-R\fR\fR .ad .sp .6 .RS 4n ディレクトリ引数を再帰的に検索して、各ファイルのモードを設定します。シンボリックリンクに出合うと、対象のファイルのモードが変更されます。しかし、再帰は発生しません。 .RE .sp .ne 2 .mk .na \fB\fB-@\fR \fInamed_attribute\fR\fR .ad .sp .6 .RS 4n ファイルオペランド自体ではなく、各ファイルオペランドの名前付き拡張属性ファイルに対して属性操作を実行します。複数の \fB-@\fR 操作が指定されている場合、名前付き属性ファイルのそれぞれに属性指定モードが適用されます。 .sp 名前付き属性 \fB*\fR は、\fBchmod \fR に伝えられると、ファイルオペランドに関連付けられたすべての拡張属性ファイルを意味すると見なされます。これは特殊ファイル \fB\&.\fR および \fB\&..\fR を参照しません。 .sp \fB\&..\fR の名前付き属性は、\fB chmod\fR に伝えられると、ファイルオペランド自体を意味すると見なされます。これにより、\fB chmod\fR を 1 回呼び出して、ファイルオペランドの指定された名前付き属性ファイルおよびファイルオペランド自体に属性指定モードを適用することが可能になります。 .RE .SH オペランド .sp .LP 次のオペランドがサポートされています。 .sp .ne 2 .mk .na \fB\fIabsolute-mode\fR\fR .ad .br .na \fB\fIsymbolic-mode-list\fR\fR .ad .sp .6 .RS 4n \fIfile\fR オペランドのいずれかで指定された各ファイルのファイルモードビットに加えられる変更を示します。詳細は、このマニュアルページの「機能説明」の項の「絶対モード」および「シンボリックモード」を参照してください。\fB\fR\fB\fR\fB\fR .RE .sp .ne 2 .mk .na \fB\fIacl_operation\fR\fR .ad .sp .6 .RS 4n ファイルの ACL で実行される変更内容を表現します。詳細は、\fB「機能説明」\fRの項の\fB「AOL 操作」\fRを参照してください。 .sp \fIacl_operation\fR は次のいずれかです。 .sp .in +2 .nf \fBA[\fR\fInumber\fR\fB] -\fR \fBA-\fR\fIacl_specification\fR \fBA[\fR\fIindex\fR\fB]{+|=}\fR\fBacl_specification\fR .fi .in -2 .sp .RE .sp .ne 2 .mk .na \fB\fIattribute_specification_list\fR\fR .ad .sp .6 .RS 4n ファイルの属性に対して実行される変更内容を表現します。詳細は、このマニュアルページの「機能説明」の項の「属性操作」を参照してください。\fB\fR .RE .sp .ne 2 .mk .na \fB\fIfile\fR\fR .ad .sp .6 .RS 4n ファイルモードビットを変更するファイルのパス名 .RE .SH 使用法 .sp .LP ファイルが 2 ギガバイト (2^31 バイト) 以上ある場合の \fBchmod\fR の動作については、\fBlargefile\fR(5) を参照してください。 .SH 使用例 .LP \fB例 1 \fR\fB実行\fR権を拒否する .sp .LP 次の例では、すべてのユーザーに対して実行権を拒否しています。 .sp .in +2 .nf % chmod a-x \fIfile\fR .fi .in -2 .sp .LP \fB例 2 \fR\fB読み取り専用\fRアクセス権を許可する .sp .LP 次の例では、すべてのユーザーに対して読み取り権だけを許可しています。 .sp .in +2 .nf % chmod 444 \fIfile\fR .fi .in -2 .sp .LP \fB例 3 \fRファイルを\fB読み取り可能\fRかつ\fB書き込み可能\fRにする .sp .LP 次の例では、グループおよびその他のユーザーがファイルを読み書きできるようにしています。 .sp .in +2 .nf % chmod go+rw \fIfile\fR % chmod 066 \fIfile\fR .fi .in -2 .sp .LP \fB例 4 \fRファイルをロックしてアクセスできないようにする .sp .LP 次の例では、ファイルをロックしてアクセスできないようにしています。 .sp .in +2 .nf $ chmod +l \fIfile\fR .fi .in -2 .sp .LP \fB例 5 \fRファイルの\fB読み取り\fR、\fB書き込み\fR、\fB実行\fR、\fBセットグループ ID\fR の各アクセス権を許可する .sp .LP 次の例では、ファイルの読み取り権、書き込み権、および実行権をすべてのユーザーに対して許可するとともに、セットグループ ID をオンにしています。 .sp .in +2 .nf $ chmod a=rwx,g+s \fIfile\fR $ chmod 2777 \fIfile\fR .fi .in -2 .sp .LP \fB例 6 \fRZFS ファイル上で新しい ACL エントリを先頭に追加する .sp .LP 次の例では、ZFS ファイル上で新しい ACL エントリを先頭に追加しています。 .sp .LP まず、現在の ACL を表示します。 .sp .in +2 .nf $ ls -v file.3 -rw-r--r-- 1 marks staff 0 Oct 9 15:49 file.3 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .sp .LP 次のコマンドを入力します。 .sp .in +2 .nf $ chmod A+user:lp:read_data:deny file.3 .fi .in -2 .sp .sp .LP 新しい ACL を表示します。 .sp .in +2 .nf $ ls -v file.3 -rw-r--r--+ 1 marks staff 0 Oct 9 15:49 file.3 0:user:lp:read_data:deny 1:owner@:execute:deny 2:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 3:group@:write_data/append_data/execute:deny 4:group@:read_data:allow 5:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 6:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .LP \fB例 7 \fRUFS ファイル上で新しい POSIX ドラフト ACL エントリを先頭に追加する .sp .LP 次の例では、UFS ファイル上で新しい POSIX ドラフト ACL エントリを先頭に追加しています。 .sp .LP まず、現在の ACL を表示します。 .sp .in +2 .nf $ ls -v file.2 -rw-r--r-- 1 marks staff 0 Oct 9 15:52 file.2 0:user::rw- 1:group::r-- #effective:r-- 2:mask:r-- 3:other:r-- .fi .in -2 .sp .sp .LP 次のコマンドを入力します。 .sp .in +2 .nf $ chmod A+user:lp:-wx file.2 .fi .in -2 .sp .sp .LP 新しい ACL を表示します。 .sp .in +2 .nf $ ls -v file.2 -rw-r--r--+ 1 marks staff 0 Oct 9 15:52 file.2 0:user::rw- 1:user:lp:-wx #effective:--- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- .fi .in -2 .sp .LP \fB例 8 \fRZFS ファイル上で ACL エントリを特定の位置に挿入する .sp .LP 次の例では、ZFS ファイルシステム上で ACL エントリを特定の位置に挿入しています。また、コンパクト ACL 形式の使い方も示しています。 .sp .LP まず、ACL を表示し、新しい ACE の挿入位置を確認します。 .sp .in +2 .nf % ls -V file.1 -rw-r--r--+ 1 root root 0 Oct 6 12:16 file.1 user:lp:rw------------:------:allow owner@:--x-----------:------:deny owner@:rw-p---A-W-Co-:------:allow group@:-wxp----------:------:deny group@:r-------------:------:allow everyone@:-wxp---A-W-Co-:------:deny everyone@:r-----a-R-c--s:------:allow .fi .in -2 .sp .sp .LP 次に、新しいエントリを位置 3 に挿入します。これにより、位置 3 から 6 に現在存在しているエントリが、下方に移動します。 .sp .LP 次のコマンドを入力します。 .sp .in +2 .nf $ chmod A3+user:marks:r:deny file.1 .fi .in -2 .sp .sp .LP 新しい ACL を表示します。 .sp .in +2 .nf $ ls -V file.1 -rw-r--r--+ 1 root staff 0 Feb 3 14:13 file.1 user:lp:rw------------:------:allow owner@:--x-----------:------:deny owner@:rw-p---A-W-Co-:------:allow user:marks:r-------------:------:deny group@:-wxp----------:------:deny group@:r-------------:------:allow everyone@:-wxp---A-W-Co-:------:deny everyone@:r-----a-R-c--s:------:allow .fi .in -2 .sp .LP \fB例 9 \fRUFS ファイル上で POSIX ドラフト ACL を特定の位置に挿入する .sp .LP このファイルシステムは、ACL をファイルシステム内に格納する際にその ACL を並べ替えます。次の例は、この動作を説明したものです。 .sp .in +2 .nf $ ls -v file.1 -rw-r--r--+ 1 root root 0 Sep 29 16:10 file.1 0:user::rw- 1:user:lp:rw- #effective:r-- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- .fi .in -2 .sp .sp .LP ここで、インデックス位置 3 にエントリを挿入します。コマンドは機能しますが、ファイルシステムによって ACL が並べ替えられます。 .sp .in +2 .nf $ chmod A3+user:marks:rw- file.1 $ ls -v file.1 -rw-r--r--+ 1 root root 0 Sep 29 16:10 file.1 0:user::rw- 1:user:lp:rw- #effective:r-- 2:user:marks:rw- #effective:r-- 3:group::r-- #effective:r-- 4:mask:r-- 5:other:r-- .fi .in -2 .sp .sp .LP ACL エントリは、要求された位置 3 に実際には挿入されず、最終的に位置 2 に挿入されています。 .LP \fB例 10 \fRZFS ファイル上の ACL エントリを削除する .sp .LP 次の例では、ACL から \fBlp\fR エントリを削除しています。 .sp .in +2 .nf $ ls -v file.3 -rw-r--r--+ 1 marks staff 0 Oct 9 15:49 file.3 0:user:lp:read_data:deny 1:owner@:execute:deny 2:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 3:group@:write_data/append_data/execute:deny 4:group@:read_data:allow 5:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 6:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .sp .in +2 .nf $ chmod A-user:lp:read_data:deny file.3 $ ls -v file.3 -rw-r--r-- 1 marks staff 0 Oct 9 15:49 file.3 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .LP \fB例 11 \fRUFS ファイル上の POSIX ドラフト ACL エントリを削除する .sp .LP 次の例では、ACL から \fBlp\fR エントリを削除しています。 .sp .in +2 .nf $ ls -v file.2 -rw-r--r--+ 1 marks staff 0 Oct 9 15:52 file.2 0:user::rw- 1:user:lp:-wx #effective:--- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- .fi .in -2 .sp .sp .in +2 .nf $ chmod A-user:lp:-wx file.2 $ ls -v file.2 -rw-r--r-- 1 marks staff 0 Oct 9 15:52 file.2 0:user::rw- 1:group::r-- #effective:r-- 2:mask:r-- 3:other:r-- .fi .in -2 .sp .LP \fB例 12 \fRZFS ファイル上の特定の ACL エントリをインデックス番号を指定して削除する .sp .LP 次のような ACL があるとします。 .sp .in +2 .nf $ ls -v file 0:group:staff:read_data/write_data/execute/read_acl:allow 1:user:bin:read_data:deny 2:user:bin:read_data:allow 3:owner@:write_data/append_data:deny 4:owner@:read_data/write_xattr/execute/write_attributes/write_acl /write_owner:allow 5:group@:write_data/append_data:deny 6:group@:read_data/execute:allow 7:everyone@:write_data/append_data/write_xattr/write_attributes /write_acl/write_owner:deny 8:everyone@:read_data/read_xattr/execute/read_attributes/read_acl /synchronize:allow .fi .in -2 .sp .sp .LP bin に対する 2 つめのユーザーエントリを削除します。 .sp .in +2 .nf $ chmod A2- file $ ls -v file 0:group:staff:read_data/write_data/execute/read_acl:allow 1:user:bin:read_data:deny 2:owner@:write_data/append_data:deny 3:owner@:read_data/write_xattr/execute/write_attributes/write_acl /write_owner:allow 4:group@:write_data/append_data:deny 5:group@:read_data/execute:allow 6:everyone@:write_data/append_data/write_xattr/write_attributes /write_acl/write_owner:deny 7:everyone@:read_data/read_xattr/execute/read_attributes/read_acl /synchronize:allow .fi .in -2 .sp .LP \fB例 13 \fRUFS ファイル上の特定の POSIX ドラフト ACL エントリを削除する .sp .LP 次の例では、次の ACL から lp エントリをインデックス番号を指定して削除しています。 .sp .in +2 .nf $ ls -v file.1 -rw-r--r--+ 1 root root 0 Sep 29 16:10 file.1 0:user::rw- 1:user:lp:rw- #effective:r-- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- $ chmod A1- file.1 $ ls -v -rw-r--r--+ 1 root root 0 Sep 29 16:10 file.1 0:user::rw- 1:group::r-- #effective:r-- 2:mask:r-- 3:other:r-- .fi .in -2 .sp .LP \fB例 14 \fRファイルから ACL をすべて削除する .sp .LP 次のコマンドは、NFSv4/ZFS ACL、POSIX ドラフト ACL のどちらでも動作します。 .sp .LP 次のような ACL があるとします。 .sp .in +2 .nf $ ls -v file.3 -rw-r--r--+ 1 marks staff 0 Oct 9 15:49 file.3 0:user:lp:read_data/write_data:allow 1:user:marks:read_acl:allow 2:owner@:execute:deny 3:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 4:group@:write_data/append_data/execute:deny 5:group@:read_data:allow 6:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 7:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .sp .LP 既存の ACL は実質的に削除され、ファイルのアクセス権ビットを表現した ACL で置き換えられます。 .sp .in +2 .nf $ chmod A- file.3 $ ls -v file.3 -rw-r--r-- 1 marks staff 0 Oct 9 15:49 file.3 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .LP \fB例 15 \fRZFS ファイル上の ACL エントリ全体を置き換える .sp .LP ACL の全体を置き換えるには、次の \fBchmod\fR 構文を使用します。 .sp .in +2 .nf $ chmod A=owner@:read_data/write_data:allow,group@:read_data/ write_data:allow,user:lp:read_data:allow file.4 $ ls -v file.4 -rw-rw----+ 1 marks staff 0 Oct 9 16:12 file.4 0:owner@:read_data/write_data:allow 1:group@:read_data/write_data:allow 2:user:lp:read_data:allow .fi .in -2 .sp .LP \fB例 16 \fRUFS ファイル上の POSIX ドラフト ACL 全体を置き換える .sp .LP この操作のほうが多少複雑になっています。置換 ACL には、ファイルの所有者、グループ所有者、その他のユーザー、およびマスクを表現するために必要なエントリと、ほかに設定する必要のあるすべてのエントリを含める必要があります。 .sp .in +2 .nf $ chmod A=user::rw-,group::rw-,other::---,mask:r--, user:lp:r-- file.3 $ ls -v file.3 -rw-r-----+ 1 root root 0 Oct 9 16:14 file.3 0:user::rw- 1:user:lp:r-- #effective:r-- 2:group::rw- #effective:r-- 3:mask:r-- 4:other:--- .fi .in -2 .sp .LP \fB例 17 \fRZFS ファイル上の特定のエントリを置き換える .sp .LP 次のような ACL があるとします。 .sp .in +2 .nf $ ls -v file.5 -rw-r--r--+ 1 marks staff 0 Oct 9 16:18 file.5 0:user:marks:read_data:allow 1:owner@:execute:deny 2:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 3:group@:write_data/append_data/execute:deny 4:group@:read_data:allow 5:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 6:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .sp .LP ここで、ユーザー marks のアクセスタイプを、許可から拒否に変更します。 .sp .in +2 .nf $ chmod A0=user:marks:read_data:deny file.5 $ ls -v file.5 -rw-r--r--+ 1 marks staff 0 Aug 23 09:11 file.5 0:user:marks:read_data:deny 1:owner@:read_data/write_data/append_data/write_xattr/write_attributes /write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/write_attributes /write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow .fi .in -2 .sp .LP \fB例 18 \fRUFS ファイル上の特定の POSIX ドラフト ACL エントリを置き換える .sp .LP 次のような ACL があるとします。 .sp .in +2 .nf $ ls -v file.4 -rw-r--r--+ 1 marks staff 0 Oct 9 16:21 file.4 0:user::rw- 1:user:lp:rwx #effective:r-- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- .fi .in -2 .sp .sp .LP ここで、\fBlp\fR のアクセス権を、\fBrwx\fR から \fBr--\fR に変更します。 .sp .in +2 .nf $ chmod A1=user:lp:r-- file.4 $ ls -v file -rw-r--r--+ 1 marks staff 0 Oct 9 16:21 file.4 0:user::rw- 1:user:lp:r-- #effective:r-- 2:group::r-- #effective:r-- 3:mask:r-- 4:other:r-- .fi .in -2 .sp .LP \fB例 19 \fRZFS ファイル上で ACL 継承フラグを設定する .sp .LP 継承フラグを設定できるのは、ZFS ファイルの場合だけです。ACL をディレクトリに対して設定する場合には、いくつかの継承フラグがオプションで設定できます。 .sp .LP ユーザー \fBlp\fR に対するある ACL エントリを、ディレクトリ内で新たに作成されたファイルに継承する必要があると想定します。まず、継承可能な ACL エントリをディレクトリ上に作成する必要があります。 .sp .in +2 .nf $ chmod A+user:lp:read_data:file_inherit:allow test.dir $ ls -dv test.dir drwxr-xr-x+ 2 marks staff 2 Aug 23 09:08 test.dir/ 0:user:lp:read_data:file_inherit:allow 1:owner@::deny 2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/write_xattr/execute/write_attributes/write_acl /write_owner:allow 3:group@:add_file/write_data/add_subdirectory/append_data:deny 4:group@:list_directory/read_data/execute:allow 5:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr /write_attributes/write_acl/write_owner:deny 6:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow .fi .in -2 .sp .sp .LP この \fBlp\fR エントリは、ディレクトリ \fBtest.dir\fR 内で新たに作成されたファイルに継承されます。 .sp .in +2 .nf $ touch test.dir/file.test $ ls -v test.dir/file.test -rw-r--r--+ 1 marks staff 0 Oct 9 16:29 test.dir/file.test 0:user:lp::deny 1:user:lp:read_data:allow 2:owner@:execute:deny 3:owner@:read_data/write_data/append_data/write_xattr/ write_attributes/write_acl/write_owner:allow 4:group@:write_data/append_data/execute:deny 5:group@:read_data:allow 6:everyone@:write_data/append_data/write_xattr/execute/ write_attributes/write_acl/write_owner:deny 7:everyone@:read_data/read_xattr/read_attributes/read_acl/ synchronize:allow .fi .in -2 .sp .sp .LP ユーザー \fBlp\fR のエントリが、新たに作成されたファイルに継承されています。複数の継承フラグの組み合わせを指定することが可能です。たとえば、\fBlp\fR エントリがディレクトリにも継承されるようにするには、次のようなコマンドを使用します。 .sp .in +2 .nf $ chmod A+user:lp:read_data:file_inherit/\e dir_inherit:allow test.dir .fi .in -2 .sp .LP \fB例 20 \fRZFS ファイルのシステム属性を置換する .sp .LP 次の例では、ZFS ファイルのシステム属性を置換します。 .sp .in +2 .nf $ chmod S=v{archive,hidden,readonly,system,appendonly,\e nonodump,immutable,noav_modified,noav_quarantined,\e nounlink,nosensitive} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S=c{AHRSaiu} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S=c{AHRSa-i--u-} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S=cAHRSaiu file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod -@ '..' S=cAHRSaiu file1 .fi .in -2 .sp .sp .LP 適切な特権を前提として、\fBfile1\fR のシステム属性 \fBarchive\fR、\fBhidden\fR、\fBreadonly\fR、\fBsystem\fR、\fBappendonly\fR、\fBimmutable\fR、および \fBnounlink\fR が設定されます。適切な特権を前提として、\fBfile1\fR のシステム属性 \fBnodump\fR、\fBav_modified\fR、\fBav_quarantined\fR、および \fBsensitive\fR がクリアされます。 .LP \fB例 21 \fRZFS ファイルのすべてのシステム属性をクリアする .sp .LP 次の例では、ZFS ファイルのシステム属性をすべてクリアします。 .sp .in +2 .nf $ chmod S-a file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod -@ '..' S-a file1 .fi .in -2 .sp .sp .LP 適切な特権を前提として、\fBfile1\fR のブール型読み書きシステム属性がすべてクリアされます。 .LP \fB例 22 \fRZFS ファイルの名前付き属性ファイルのシステム属性を設定する .sp .LP 次の例では、ZFS ファイル自体ではなく、ZFS ファイルの名前付き属性ファイルのシステム属性を設定します。 .sp .in +2 .nf $ chmod -@ myattr S+vhidden file1 .fi .in -2 .sp .sp .LP これにより、隠しシステム属性が、ファイル \fBfile1\fR 自体ではなく、その名前付き属性ファイル \fBmyattr\fR に設定されます。 .LP \fB例 23 \fRZFS ファイルのすべての名前付き属性ファイルのシステム属性を設定する .sp .LP 次の例では、ZFS ファイル自体ではなく、ZFS ファイルのすべての名前付き属性ファイルのシステム属性を設定します。 .sp .in +2 .nf $ chmod -@ '*' S+a file1 .fi .in -2 .sp .LP \fB例 24 \fRZFS ファイルのすべての名前付き属性ファイルのシステム属性を設定する .sp .LP 次の例では、ZFS ファイルのすべての名前付き属性ファイル、および ZFS ファイル自体のシステム属性を設定します。 .sp .in +2 .nf $ chmod -@ '..' -@ '*' S+vhidden file1 .fi .in -2 .sp .sp .LP これにより、\fBfile1\fR のすべての名前付き属性ファイル、およびそのファイル自体に対して隠しシステム属性が設定されます。 .LP \fB例 25 \fRディレクトリ階層を再帰的に検索する .sp .LP 次の例では、ディレクトリ階層を再帰的に検索して、すべての名前付き属性ファイル、ZFS ファイルオペランド、およびディレクトリ自体のシステム属性をすべて設定します。 .sp .in +2 .nf $ chmod -R -@ '..' -@ '*' S+a directory1 .fi .in -2 .sp .sp .LP これにより、\fBdirectory1\fR のディレクトリ階層内にあるすべての通常ファイルおよびディレクトリの名前付き属性ファイルすべて、および \fBdirectory1\fR 自体に対し、隠しシステム属性が設定されます。 .LP \fB例 26 \fRZFS ファイルの \fBhidden\fR および \fBsystem\fR システム属性を設定する .sp .LP 次の例では、ZFS ファイルの \fBhidden\fR および \fBsystem \fR システム属性を設定します。 .sp .in +2 .nf $ chmod S+cHS file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S+vhidden,+vsystem file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S+v{hidden,system} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S+c{-HS--------} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S-v{nohidden,nosystem} file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S-v{hidden,system},+v{hidden,system} file1 .fi .in -2 .sp .LP \fB例 27 \fRZFS ファイルのすべてのシステム属性をクリアする .sp .LP 次の例では、ZFS ファイルのシステム属性をすべてクリアします。 .sp .in +2 .nf $ chmod S-a file1 .fi .in -2 .sp .sp .LP または .sp .in +2 .nf $ chmod S=v{} file1 .fi .in -2 .sp .sp .LP 次の 2 つの例では、指定された最後の属性操作が優先されます。 .sp .LP この例では、置換属性名リスト (\fB{}\fR) により \fBfile1\fR のシステム属性がすべてクリアされます。 .sp .in +2 .nf $ chmod S+cHS,=v{} file1 .fi .in -2 .sp .sp .LP この例では、クリア属性操作 (\fB-a\fR) により \fBfile1\fR のシステム属性がすべてクリアされます。 .sp .in +2 .nf $ chmod S+vhidden,+vsystem,-a file1 .fi .in -2 .sp .LP \fB例 28 \fRファイルのすべてのブール型読み書きシステム属性の値を設定する .sp .LP 次の例では、あるファイルのすべてのブール型読み書きシステム属性の値を、別のファイルのブール型読み書きシステム属性と同じに設定します。 .sp .in +2 .nf $ chmod S=v`ls -/v file1|sed -n '2s/.*{/{/p'` file2 .fi .in -2 .sp .sp .LP 適切な特権および \fBfile1\fR と \fB file2\fR がサポートされる同じシステム属性を保持しているという前提で、\fBfile1\fR に設定されたすべてのシステム属性が \fBfile2\fR に対しても設定されます。クリアされた \fBfile1\fR のすべてのシステム属性が、\fBfile2\fR でもクリアされます。 .SH 環境 .sp .LP \fBchmod\fR の実行に影響を与える次の環境変数についての詳細は、\fBenviron\fR(5) を参照してください。\fBLANG\fR、\fBLC_ALL\fR、\fBLC_CTYPE\fR、\fBLC_MESSAGES\fR、および \fBNLSPATH\fR。 .SH 終了ステータス .sp .LP 次の終了ステータスが返されます。 .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .sp .6 .RS 4n 正常終了。 .RE .sp .ne 2 .mk .na \fB>\fB0\fR\fR .ad .sp .6 .RS 4n エラーが発生した。 .RE .SH 属性 .sp .LP 属性についての詳細は、マニュアルページの \fBattributes\fR(5) を参照してください。 .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性タイプ属性値 _ 使用条件system/core-os _ CSI有効 _ インタフェースの安定性確実 .TE .SH 関連項目 .sp .LP \fBgetfacl\fR(1), \fBls\fR(1), \fBsetfacl\fR(1), \fBchmod\fR(2), \fBfgetattr\fR(3C), \fBacl\fR(5), \fBattributes\fR(5), \fBenviron\fR(5), \fBfsattr\fR(5), \fBlargefile\fR(5), \fBstandards\fR(5) .sp .LP \fI『Managing ZFS File Systems in Oracle Solaris 11.3』\fR .SH 注意事項 .sp .LP ディレクトリのセットグループ \fBID\fR ビットをそっくり置き換えることはできません。 \fBg+s\fR または \fBg–s\fR を使用してください。 .sp .LP \fBchmod\fR は規定に反しないかぎり、無意味なモード作成でも許可します (たとえば、テキストファイルを実行可能にする)。\fBchmod\fR は強制ロックが意味をなすか否かを見るために、ファイルのタイプをチェックすることはありません。 .sp .LP ファイルシステムが \fInosuid\fR オプションでマウントされている場合、\fIsetuid\fR の実行は許可されません。 .sp .LP \fBchmod\fR を使用して \fBACL\fR エントリを持つファイル上のファイルグループ所有者のアクセス権を変更すると、ファイルグループ所有者のアクセス権と \fBACL\fR マスクの両方が、新しいアクセス権に変わります。新しい \fBACL\fR マスクのアクセス権は、そのファイル上に \fBACL\fR エントリを持つ追加ユーザーおよびグループの実効アクセス権を変更する場合があるので注意が必要です。\fBgetfacl\fR(1) または \fBls\fR(1) コマンドを使用して、すべての \fBACL\fR エントリに適切なアクセス権が設定されていることを確認してください。