ファイルのACLマスクは、標準グループ権限とどのように関連していますか?

ファイルのACLマスクは、標準グループ権限とどのように関連していますか?

まず、ファイルを生成し、標準権限と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マスクの標準グループ権限も変更されました。

  1. ACLマスクと標準グループ権限にはどのような関連がありますか?
  2. ACLマスクとファイルグループ権限を組み合わせるのはなぜですか?その背後にあるロジックは何ですか?

問題のディストリビューションはDebian Linux 7.6とCentOS 7です。


編集する

この時点で、標準ファイルグループ権限とACLマスクの関係を調べながら、見つかった結果のいくつかを共有したいと思います。私が見つけた経験的観察は次のとおりです。

  1. ACL マスクは次のように変更できます。

    1. コマンドで直接設定してくださいsetfacl -m m:<perms>
    2. コマンドを使用してファイルグループ権限を変更しますchmod(ACLマスクがすでに存在する場合は、ファイルに名前付きユーザーまたはグループACL権限がない場合はオプションであるため、存在しない可能性があります)。
    3. 指定されたユーザーまたはグループACLエントリを追加します(マスクは自動的に再計算されます)。
  2. マスクは、マスクがsetfaclによって直接設定されている場合、またはchmodを介してファイルグループ権限を変更する場合(自動的に計算されない場合)にのみ最大アクセスを適用します(ACLマスク権限以上の権限を持つACLエントリがある場合)。 ACLエントリを変更すると、ACLマスクの自動再計算がトリガされ、「適用モード」が効果的にオフになります。

  3. ACL を使用する場合、標準ファイルグループの権限に暗黙的に影響を与えるいくつかの副作用があります。

    1. ファイルに適用された指定されたユーザーまたはグループACLエントリは、ACLマスクを変更(権限を増やす)することで、有効ファイルグループ権限を変更できます。たとえば、ファイル所有者として「rw-r--r--jim Students」権限を設定し、ユーザー「jack」にrw権限も付与する場合、暗黙的に「生徒」グループです。
    2. より制限された(権限の少ない)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を使用すると、グループクラス権限はマスクエントリ権限にマッピングされますが、グループエントリはまだグループ権限を定義します。グループクラス権限マッピングはもはや一定ではありません。

おすすめ記事