まず、ファイルを生成し、標準権限とACLエントリを確認します。
$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--
その後、ファイルにACLマスクを設定し、標準の権限とACLエントリを再確認しました。
$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--
ファイルに対するACLマスクの標準グループ権限も変更されました。
- ACLマスクと標準グループ権限にはどのような関連がありますか?
- ACLマスクとファイルグループ権限を組み合わせるのはなぜですか?その背後にあるロジックは何ですか?
問題のディストリビューションはDebian Linux 7.6とCentOS 7です。
編集する
この時点で、標準ファイルグループ権限とACLマスクの関係を調べながら、見つかった結果のいくつかを共有したいと思います。私が見つけた経験的観察は次のとおりです。
ACL マスクは次のように変更できます。
- コマンドで直接設定してください
setfacl -m m:<perms>
。 - コマンドを使用してファイルグループ権限を変更します
chmod
(ACLマスクがすでに存在する場合は、ファイルに名前付きユーザーまたはグループACL権限がない場合はオプションであるため、存在しない可能性があります)。 - 指定されたユーザーまたはグループACLエントリを追加します(マスクは自動的に再計算されます)。
- コマンドで直接設定してください
マスクは、マスクがsetfaclによって直接設定されている場合、またはchmodを介してファイルグループ権限を変更する場合(自動的に計算されない場合)にのみ最大アクセスを適用します(ACLマスク権限以上の権限を持つACLエントリがある場合)。 ACLエントリを変更すると、ACLマスクの自動再計算がトリガされ、「適用モード」が効果的にオフになります。
ACL を使用する場合、標準ファイルグループの権限に暗黙的に影響を与えるいくつかの副作用があります。
- ファイルに適用された指定されたユーザーまたはグループACLエントリは、ACLマスクを変更(権限を増やす)することで、有効ファイルグループ権限を変更できます。たとえば、ファイル所有者として「rw-r--r--jim Students」権限を設定し、ユーザー「jack」にrw権限も付与する場合、暗黙的に「生徒」グループです。
- より制限された(権限の少ない)ACLマスクは、対応する標準ファイルグループ権限を永久に削除できます。たとえば、rw標準ファイルグループ権限を持つファイルがあり、そのファイルに読み取り専用ACLマスクを適用すると、ファイルに対するグループ権限が読み取り専用に縮小されます。その後、コマンドを使用してすべての拡張ACLエントリを削除すると、
setfacl -b
グループ権限は読み取り専用のままになります。これはより厳しいACLマスクにのみ適用され、より滑らかなACLマスク(より多くの権限)は削除後に元のファイルグループ権限を永久に変更しません。
ベストアンサー1
unixファイル権限がaclエントリと一致しない場合、またはその逆の場合は意味がありません。したがって、マニュアルページ(acl(5)
)には要件が記載されています。
ACLエントリとファイル権限ビットの対応
ACLによって定義された権限は、ファイル権限ビットによって指定された権限の親セットです。
ファイル所有者、グループ、その他の権限と特定のACLエントリとの間には対応関係があります。所有者権限は、ACL_USER_OBJエントリの権限に対応します。 ACLにACL_MASKエントリがある場合、グループ権限はACL_MASKエントリの権限に対応します。それ以外の場合、ACL に ACL_MASK エントリがない場合、グループ権限は ACL_GROUP_OBJ エントリの権限に対応します。その他の権限は、ACL_OTHER_OBJ エントリの権限に対応します。
ファイル所有者、グループ、およびその他の権限は、常にそのACLエントリの権限と一致します。ファイル権限ビットを変更すると関連するACLエントリが変更され、これらのACLエントリを変更するとファイル権限ビットが変更されます。
議論に応じて付録:
ACLマスクとファイルグループ権限を組み合わせるのはなぜですか?その背後にあるロジックは何ですか?
良い説明はここ。デフォルトでは、マスクパックは
[...] グループクラスのすべての項目によって付与される権限の上限です。
この cap 属性は、ACL がサポートされると、ACL を認識しない POSIX.1 アプリケーションが突然予期せず追加の許可を開始しないようにします。
最小ACLでは、グループクラス権限は、自分が属するグループ権限と同じです。拡張ACLでは、グループクラスに他のユーザーまたはグループのエントリを含めることができます。これにより問題が発生します。これらの追加項目の中には、所有グループ項目に含まれていない権限が含まれている可能性があるため、所有グループ項目権限がグループクラス権限と同じでない場合があります。
この問題はアイテムをマスクすることで解決されました。最小 ACL を使用して、グループ・クラス権限は、自分が属するグループ項目権限にマップされます。拡張ACLを使用すると、グループクラス権限はマスクエントリ権限にマッピングされますが、グループエントリはまだグループ権限を定義します。グループクラス権限マッピングはもはや一定ではありません。