10.2.2.2. ACL が有効なファイルに対する chmod の動作
chmod コマンドの動作は、ls -l で使用されるマッピングをそのまま反映しています。
-
ACL マスクが存在しない場合、
chmodは、標準ファイルの場合と同様に、所有グループの権限を変更します。 -
ACL マスクが存在する場合、
chmodはマスクの権限を変更し、所有グループの権限は変更しません。
これは連鎖的な影響を及ぼします。
-
chmodを使用してマスクの権限を下げると、そのマスクに依存しているすべての名前付きユーザーおよびグループの実際に有効な権限を制限することになります。 -
ACL で特定のユーザーに
rwx権限が付与されていても、chmodでマスクをr--に設定すると、そのユーザーは実質的に読み取りアクセスしかできなくなります。
chmod g-w が影響を及ぼすのはファイルの所有グループだけであると考えないようご注意ください。ACL が設定されているファイルに対してこのコマンドを実行すると、マスクの権限が厳しくなり、結果として setfacl で以前にアクセス許可を与えていた特定のユーザーの書き込みアクセスまでブロックしてしまう可能性があります。
ACL マスクが権限に与える影響
次の例は、ACL を追加すると ls -l の出力がどのように変化するか、また chmod がマスクにどのように影響するかを示しています。
初期状態: 標準の権限が設定された
file1という名前のファイルが存在します。$ ls -l file1-rw-rw-r--. 1 root root 0 Jul 3 10:00 file1ユーザーの追加: ユーザー
johnに、このファイルへのフルアクセス (rwx) 権限を付与します。$ setfacl -m u:john:rwx file1注記デフォルトでは、
setfaclは、マスクの影響を受けるすべての権限の和集合になるように、マスクエントリーを自動的に作成または更新します。この場合、マスクはjohnに付与された新しい権限に対応するためにrwxに設定されます。-n(マスクなし) オプションを使用すると、この自動再計算を防止できます。変更の確認:
ls -lの出力に+記号が表示され、グループ権限の列にrwxが表示されます。このrwxは、所有グループの権限ではなく、(johnに対応するために自動的に作成された) 新しいマスクを反映しています。$ ls -l file1-rw-rwxr--+ 1 root root 0 Jul 3 10:05 file1getfaclによる検証:getfaclコマンドにより、johnがrwxを持ち、所有グループがまだrw-を持ち、マスクがrwxであることを確認します。$ getfacl --omit-header file1user::rw- user:john:rwx group::rw- mask::rwx other::r--chmod による権限の変更: 標準の
chmodを使用して、グループの書き込みアクセス権を削除することにします。$ chmod g-w file1結果: この操作によりマスクが更新されます。その結果、ジョンの個別の ACL エントリーは
rwxのままであっても、ジョンの実際に有効な権限は制限されます。$ ls -l file1-rw-r-xr--+ 1 root root 0 Jul 3 10:10 file1$ *getfacl --omit-header file1*user::rw- user:john:rwx #effective:r-x group::rw- #effective:r– mask::r-x other::r--#effectiveコメントは、システムによって実際に適用される権限を示しています。