名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
chmod [-fR] absolute-mode file...
chmod [-fR] symbolic-mode-list file...
chmod [-fR] acl_operation file...
chmod ユーティリティはファイルモードの変更や割り当てを行います。
また、chmod を使えば、ファイルやディレクトリ上のアクセス制御リスト (ACL) を変更することもできます。
絶対モードは次の形式で指定します。
chmod [options] absolute-mode file . . .
ここで、absolute-mode は、以下のように定義されている 8 進数 nnnn を使用して指定します。
0 から 7 の数字を表します。 絶対モードは、以下のモードのいくつかの論理和をとったものです。
実行時にユーザー ID を設定します。
# が 7 、 5 、 3 または 1 のとき、 実行時にグループ ID を設定します。
# が 6 、 4 、 2 または 0 のとき、 強制ロックを許可します。
ディレクトリに対して使用されると、グループ ID の継承については BSD のセマンティクスに基づいてファイルが作成されます。このオプションを使用すると、そのディレクトリ中に作成される ファイルやサブディレクトリは、カレントプロセスのグループ ID ではなく、ディレクトリのグループ ID を引き継ぎます。ディレクトリの場合、set-gid ビットをセットまたはクリアできるのはシンボリックモードを使用する場合だけです。
スティッキビットをオンにします。chmod(2) を参照してください。
所有者による読み取りを許可します。
所有者による書き込みを許可します。
所有者による実行 (ディレクトリ内での検索) を許可します。
所有者による読み取り、書き込み、実行 (検索) を許可します。
グループによる読み取りを許可します。
グループによる書き込みを許可します。
グループによる実行 (ディレクトリ内での検索) を許可します。
グループによる読み取り、書き込み、実行 (検索) を許可します。
その他のユーザーによる読み取りを許可します。
その他のユーザーによる書き込みを許可します。
その他のユーザーによる実行 (ディレクトリ内での検索) を許可します。
その他のユーザーによる読み取り、書き込み、実行 (検索) を許可します。
ディレクトリに対して、絶対モードでは setgid のセットやクリアは行えません。 シンボリックモードで g+s (または g–s) を使って行う必要があります。
シンボリックモードは次の書式で指定します。
chmod [options] symbolic-mode-list file . . .
ここで、symbolic-mode-list は、いくつかのシンボリックモードの式をコンマで区切った (空白をはさまない) ものです。 各々の式は、次の形式で記述します。
[who] operator [permissions]
処理は、記述された順序で実行されます。1 つの演算子 (operator) の後に permissions として複数のアクセス権文字を指定すると、 その演算子で示された処理が同時に行われます。
u、 g、 o、 a の文字の 1 つ以上の組み合わせ (または省略) で、 誰のアクセス権が変更または割り当てられるのかを指定します。
ユーザーのアクセス権
グループのアクセス権
その他のアクセス権
全アクセス権 (ユーザー、グループ、その他)
who が省略されると、デフォルトとして a と解釈されますが、ファイルモード作成マスク (詳細は sh(1) または csh(1) の umask の項を参照) の設定値は考慮されます。 who が省略されると、 chmod はユーザーマスクの制限を置き換えません。
+、-、= のいずれか。次のようにアクセス権の変更方法を示します。
アクセス権を付加します。
permissions を省略すると、何も付加されません。
who が省略されると、対応するビットがファイルモード生成マスク中に セットされている場合を除き、 permissions が示すファイルモードビットが付加されます。
who が指定されていれば、 permissions が示すファイルモードビットが付加されます
アクセス権を除去します。
permissions を省略すると、何も行われません。
who が省略されると、対応するビットがファイルモード生成マスク中に セットされている場合を除き、 permissions が示すファイルモードビットをクリアします。
who が指定されていれば、 permissions が示すファイルモードビットをクリアします。
指定されたアクセス権をそのまま割り当てます。
who が省略されると、すべてのファイルモードビットをクリアします。 who が指定されていれば、 who が示すファイルモードビットをクリアします。
permissions を省略すると、他には何も行われません。
who が省略されると、対応するビットがファイルモード生成マスク中に セットされている場合を除き、 permissions が示すファイルモードビットが付加されます。
who が指定されていれば、 permissions が示すファイルモードビットが付加されます。
= は、他のシンボリック演算子と違って、 who が示す他のすべてのビットをリセットしてしまう という絶対的な効果があります permission の省略は、 = を使用してすべてのアクセス権を除去するときのみ便利です。
以下の文字の適切な組み合わせで指定します。
強制ロッキング
読み取り権
ユーザーまたはセットグループ ID
スティッキビット
書き込み権
実行権
実行権 (ファイルがディレクトリの場合、または他のユーザークラスのいずれかに実行権がある場合)
permission がそれぞれ現在のユーザー、グループ、 またはその他のモードから除去されることを意味します。
ファイルへのアクセス権は、ユーザー ID 番号 (UID) およびグループ ID 番号 (GID) によって異なります。アクセス権は、 3 つのユーザーモードがそれぞれ 3 つの文字を持つように記述されます。
ユーザー |
グループ |
その他 |
rwx |
rwx |
rwx |
この例 (ユーザー、グループ、その他が、当該ファイルの読み取り、書き込み、 実行権を持っている) は、アクセス権を与える際の 2 つのカテゴリを示しています。 1 つはアクセスクラス、もう 1 つはアクセス権そのものです。
文字 s は、 u または g と一緒に指定したときのみ有効です。また、 t は u とのみ指定できます。
強制的なファイルおよびレコードのロック (l) は、プログラムがアクセスしている間、そのファイルの読み込み、 書き込み権がロックされることを意味します。
セットグループ ID ビットがオンになっているディレクトリは、 'ls –ld' で -----s--- または -----l--- が出力されることで判定できますが、このようなディレクトリ中で ファイルやサブディレクトリを生成する際には、 その親ディレクトリのセットグループ ID が与えられます。カレントプロセスの セットグループ ID ではありません。
グループ実行権を与えて、 同時に実行時にファイルをロックすることはできません。 さらに、セットグループ ID ビットをオンにして同時に実行時にファイルをロックすることはできません。したがって、以下の例は無効であり、エラーメッセージが出力されます。
chmod g+x,+l file chmod g+s,+l file |
ファイルまたはディレクトリの所有者 (またはスーパーユーザー) だけが そのファイルまたはディレクトリのモードを変更できます。スーパーユーザーだけがディレクトリでないファイルの スティッキビットを設定できます。スーパーユーザーでなければ、 chmod はスティッキビットをマスクしますが、エラーは返しません。ファイルのセットグループ ID ビットをオンにするには、自分自身のグループ ID がファイルのそれと一致していて、 さらにグループ実行権が設定されていなければなりません。
ACL 操作は次の形式で指定します。
chmod [options] A[number]- file ... chmod [options] A-acl_specification file ... chmod [options] A[index]{+|=}acl_specification file ... |
ここで、acl_specification は、空白を含まないコンマ区切りリスト形式の ACL 指定です。形式は次のとおりです。
acl_specification に指定されたアクセス制御エントリ (ACE) を、ファイルの ACL の先頭に追加します。ファイルシステムによっては、ファイルへの適用時に ACL が並べ替えられることがあります。「省略可能」な番号が指定された場合、指定された番号の前に新しい ACE が挿入されます。
ファイル上の現在の ACL に対するすべての ACE を削除し、そのファイルの現在のモードだけを表現した新しい ACL で現在の ACL を置き換えます。
index の番号で指定された ACE を削除します。
acl_specification で指定された ACE が現在のファイルの ACL 内に存在している場合、そのエントリを削除します。
ファイルの ACL 全体を acl_specification で置き換えます。
ファイル上の現在の ACL 内で、特定のインデックス番号以降の ACE を置き換えます。ACE が複数指定された場合、acl_specification 内の後続の各 ACE によって、現在の ACL 内の対応する ACE が置き換えられます。
POSIX ドラフト ACL 指定 (UFS でサポート)
UFS でサポートされる POSIX ドラフト ACL は、次のようにコロン (:) で区切られたフィールドとして指定されます。
所有者のアクセス権。
特定のユーザーのアクセス権。
ファイルのグループ所有者のアクセス権。
特定のグループのアクセス権。
ファイルの所有者やグループ所有者のメンバー以外のユーザーのアクセス権。
ACL マスク。マスクエントリは、ユーザー (所有者以外) とグループに許可される最大のアクセス権を示します。
所有者のデフォルトアクセス権。
特定のユーザーのデフォルトアクセス権。
ファイルのグループ所有者のデフォルトアクセス権。
特定のグループのデフォルトアクセス権。
ファイルの所有者やグループ所有者のメンバー以外のユーザーのデフォルトアクセス権。
デフォルトの ACL マスク。
上記の指定方法を使えば、ACL を次のように指定できます。
user:tom:rw-,mask:rwx,group:staff:r-x |
NFSv4 ACL 指定 (NFSv4 と ZFS でサポート)
NFSv4 ACL は、より豊富な ACL セマンティックを提供します。この ACL は、許可エントリと拒否エントリの両方を提供するほか、より細粒度の高いアクセス権と拡張された継承制御を提供します。
NFSv4 ACL は、次のようにコロン (:) で区切られたフィールドとして指定されます。
ファイルの所有者のアクセス権。
ファイルのグループ所有者のアクセス権。
ファイルの所有者とグループ所有者を含むすべてのユーザーに対するアクセス権。
特定のユーザーのアクセス権。
特定のグループのアクセス権。
アクセス権を指定する際には、異なる 3 つの chmod ACL 形式を使用できます。冗長、コンパクト、定位置です。冗長形式では、単語を使ってアクセス権を指定し、複数のアクセス権はスラッシュ (/) 文字で区切ります。コンパクト形式ではアクセス権文字を使用し、定位置形式ではアクセス権文字とハイフン (-) を使用します。ハイフンはアクセス権がないことを示します。
冗長モード用のアクセス権とコンパクトモードおよび定位置モード用の短縮形について、次に説明します。短縮形は括弧内に示しています。
ファイルのデータを読み取る権限。
ディレクトリの内容を表示するためのアクセス権。
ファイルのデータを変更する権限。ファイルのオフセット範囲内の任意の場所。
ディレクトリに新しいファイルを追加するためのアクセス権。
ファイルのデータを変更する機能。ただし、変更できるのは EOF 以降のみです。
現在、この権限はサポートされていません。
ディレクトリにサブディレクトリを作成する権限。
ファイルの拡張属性を読み取る機能。
拡張属性を作成したり拡張属性ディレクトリに書き込んだりする機能。
ファイルを実行する権限。
ファイルの基本属性 (ACL 以外) を読み取る機能。
ファイルまたはディレクトリに関連付けられた時刻を任意の値に変更するためのアクセス権。
ファイルを削除するためのアクセス権。
ディレクトリ内のファイルを削除する権限。
ファイルの ACL を読み取る権限。
ファイルの ACL を書き込む権限。
ファイルの所有者を変更する権限。
同期付きの読み取り権と書き込み権を使ってサーバー上のファイルにローカルアクセスする権限。
現在、この権限はサポートされていません。
コンパクト ACL 形式では、14 個の一意の文字を使ってアクセス権を指定します。
定位置 ACL 形式では、ls -V の形式に似た定位置引数として、アクセス権を指定します。ハイフン (-) は、その位置のアクセス権が許可されていないことを示しますが、このハイフンは省略可能であり、指定する必要があるのは必須文字だけです。
上記の文字は、定位置表記で指定する順番に並んでいます。
これらの文字を使えば、アクセス権を次のように指定できます。
rwx--D-------- |
ハイフンを削除すれば、文字列が次のようにコンパクトになります。
rwxD |
省略可能な継承フラグの指定形式は 3 つあります。最初の形式では、単語を使ってさまざまな継承フラグを指定します。複数の継承フラグはスラッシュ (/) 文字で区切ります。
新たに作成されたすべてのファイルに継承します。
新たに作成されたすべてのディレクトリに継承します。
ディレクトリに対して指定された場合、そのディレクトリには適用せず、新たに作成されたファイルやディレクトリだけに適用します。このフラグを使用する際には、file_inherit または dir_inherit、あるいはその両方も指定する必要があります。
ディレクトリ内のオブジェクトには ACL エントリを継承しますが、レベルが 1 つ下がった時点でその継承を停止すべきであることを示します。このフラグを使用する際には、file_inherit または dir_inherit、あるいはその両方も指定する必要があります。
上記の継承フラグは、コンパクト形式で指定することもでき、また、ls -V の形式に似た定位置引数として指定することもできます。定位置 ACL 形式でのハイフン文字は、その位置の継承フラグが指定されていないことを示します。
これらの文字を使って継承フラグを指定する場合、次のいずれの同等の方法を使ってもかまいません。
file_inherit/dir_inherit/no_propagate |
fd-n-- |
fdn |
この継承モデルを使えば、ACL エントリを次のように指定できます。
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 |
次のオプションを指定できます。
強制。chmod はファイルモードの変更に失敗しても何もしません。
再帰的にディレクトリの階層をたどって、 上述のように各ファイルのモードを変更していきます。 シンボリックリンクに出合うと、対象のファイルのモードが変更されます。 しかし、再帰は発生しません。
次のオペランドを指定できます。
file オペランドのいずれかで指定された各ファイルのファイルモードビットに加えられる変更を示します。詳細については、前述の「絶対モード」と「シンボリックモード」の項を参照してください。
ファイルの ACL で実行される変更内容を表現します。詳細は、「機能説明」の項の「AOL 操作」を参照してください。
acl_operation は次のいずれかです。
A[number] - A-acl_specification A[index]{+|=}acl_specification |
ファイルモードビットを変更するファイルのパス名
ファイルが 2 ギガバイト (231 バイト) 以上ある場合の chmod の動作については、largefile(5) を参照してください。
次の例では、すべてのユーザーに対して実行権を拒否しています。
example% chmod a-x file |
次の例では、すべてのユーザーに対して読み取り権だけを許可しています。
example% chmod 444 file |
次の例では、グループおよびその他のユーザーがファイルを読み書きできるようにしています。
example% chmod go+rw file example% chmod 066 file |
次の例では、ファイルをロックしてアクセスできないようにしています。
example% chmod +l file |
次の例では、ファイルの読み取り権、書き込み権、および実行権をすべてのユーザーに対して許可するとともに、セットグループ ID をオンにしています。
example% chmod a=rwx,g+s file example% chmod 2777 file |
次の例では、ZFS ファイル上で新しい ACL エントリを先頭に追加しています。
まず、現在の ACL を表示します。
example% 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 |
次のコマンドを発行します。
example% chmod A+user:lp:read_data:deny file.3 |
新しい ACL を表示します。
example% 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 |
次の例では、UFS ファイル上で新しい POSIX ドラフト ACL エントリを先頭に追加しています。
まず、現在の ACL を表示します。
example% 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-- |
次のコマンドを発行します。
example% chmod A+user:lp:-wx file.2 |
新しい ACL を表示します。
example% 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-- |
次の例では、ZFS ファイルシステム上で ACL エントリを特定の位置に挿入しています。また、コンパクト ACL 形式の使い方も示しています。
まず、ACL を表示し、新しい ACE の挿入位置を確認します。
example% 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 |
次に、新しいエントリを位置 3 に挿入します。これにより、位置 3 から 6 に現在存在しているエントリが、下方に移動します。
次のコマンドを発行します。
example% chmod A3+user:marks:r:deny file.1 |
新しい ACL を表示します。
example% 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 |
このファイルシステムは、ACL をファイルシステム内に格納する際にその ACL を並べ替えます。次の例は、この動作を説明したものです。
example% 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-- |
ここで、インデックス位置 3 にエントリを挿入します。コマンドは機能しますが、ファイルシステムによって ACL が並べ替えられます。
example% chmod A3+user:marks:rw- file.1 example% 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-- |
ACL エントリは、要求された位置 3 に実際には挿入されず、最終的に位置 2 に挿入されています。
次の例では、ACL から lp エントリを削除しています。
example% 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 |
example% chmod A-user:lp:read_data:deny file.3 example% 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 |
次の例では、ACL から lp エントリを削除しています。
example% 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-- |
example% chmod A-user:lp:-wx file.2 example% 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-- |
次のような ACL があるとします。
example% 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 |
bin に対する 2 つめのユーザーエントリを削除します。
example% chmod A2- file example% 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 |
次の例では、次の ACL から lp エントリをインデックス番号を指定して削除しています。
example% 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-- example% chmod A1- file.1 example% 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-- |
次のコマンドは、NFSv4/ZFS ACL、POSIX ドラフト ACL のどちらでも動作します。
次のような ACL があるとします。
example% 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 |
既存の ACL は実質的に削除され、ファイルのアクセス権ビットを表現した ACL で置き換えられます。
example% chmod A- file.3 example% 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 |
ACL の全体を置き換えるには、次の chmod 構文を使用します。
example% chmod A=owner@:read_data/write_data:allow,group@:read_data/ write_data:allow,user:lp:read_data:allow file.4 example% 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 |
この操作のほうが多少複雑になっています。置換 ACL には、ファイルの所有者、グループ所有者、その他のユーザー、およびマスクを表現するために必要なエントリと、ほかに設定する必要のあるすべてのエントリを含める必要があります。
example% chmod A=user::rw-,group::rw-,other::---,mask:r--, user:lp:r-- file.3 example% 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:--- |
次のような ACL があるとします。
example% 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 |
ここで、ユーザー marks のアクセスタイプを、許可から拒否に変更します。
example% chmod A0=user:marks:read_data:deny file.5 example% 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 |
次のような ACL があるとします。
example% 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-- |
ここで、lp のアクセス権を、rwx から r-- に変更します。
example% chmod A1=user:lp:r-- file.4 example% 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-- |
継承フラグを設定できるのは、ZFS ファイルの場合だけです。ACL をディレクトリに対して設定する場合には、いくつかの継承フラグがオプションで設定できます。
ユーザー lp に対するある ACL エントリを、ディレクトリ内で新たに作成されたファイルに継承する必要があると想定します。まず、継承可能な ACL エントリをディレクトリ上に作成する必要があります。
example% chmod A+user:lp:read_data:file_inherit:allow test.dir example% 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 |
この lp エントリは、ディレクトリ test.dir 内で新たに作成されたファイルに継承されます。
example% touch test.dir/file.test example% 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 |
ユーザー lp のエントリが、新たに作成されたファイルに継承されています。複数の継承フラグの組み合わせを指定することが可能です。たとえば、lp エントリがディレクトリにも継承されるようにするには、次のようなコマンドを使用します。
example% chmod A+user:lp:read_data:file_inherit/\ dir_inherit:allow test.dir |
chmod の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWcsu |
CSI |
対応済み |
インタフェースの安定性 |
標準 |
getfacl(1), ls(1), setfacl(1), chmod(2), acl(5), attributes(5), environ(5), largefile(5), standards(5)
ディレクトリのセットグループ ID ビットをそっくり置き換えることはできません。 g+s または g–s を使用してください。
chmod は規定に反しないかぎり、無意味なモード作成でも 許可します (たとえば、テキストファイルを実行可能にする) 。chmod は強制ロックが意味をなすか否かを見るために、 ファイルのタイプをチェックすることはありません。
ファイルシステムが nosuid オプションでマウントされている場合、 setuid の実行は許可されません。
chmod を使用して ACL エントリのファイルのアクセス権を変更すると、ファイルのグループ所有権と ACL マスクの両方が、新しいアクセス権に変わります。新しい ACL マスクのアクセス権は、ファイル上の ACL エントリを所有する追加ユーザーや追加グループの実効アクセス権を変更する場合があることに注意してください。getfacl(1) または ls(1) コマンドを使用して、すべての ACL エントリに適切なアクセス権が設定されていることを確認してください。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項