setfacl を使用して、グループメンバーがディレクトリ内のすべてのファイルに書き込むことを許可する

setfacl を使用して、グループメンバーがディレクトリ内のすべてのファイルに書き込むことを許可する

「app」グループの誰でも、既存のUNIX権限に関係なく、/usr/local/users/appに含まれているすべてのファイルを編集できるようにsetfaclを使用したいと思います。 2人のユーザーJohnとBenがいます。フォローしてみました。他の質問に関するガイダンスしかし、ジョンはいくつかのファイルに書き込むことができません。これはACLマスクによるものです。しかし、rwxディレクトリにデフォルトマスクを設定しましたが、その中のファイルが作成されたときにそれを継承する必要はありませんか?

たとえば、Johnは以下のファイルに書き込むことはできませんが、ファイルにaclを作成した「app」グループのメンバーなので、ファイルを編集できないことに驚きました。

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--

答え1

getfaclが投げる「有効な」コメントを確認できます。問題は、「アプリケーション」に書き込みビットが設定されないように権限が計算されることです。これは、ファイルのマスクが読み取り専用に設定されているために発生します。マスクは、特定のファイルまたはディレクトリに付与できる権限の数を制限するために使用されます。

この動作を望む理由の例は、ファイルにアクセスするために合法的に異なるユーザー/グループが必要になることがありますが、何らかの理由で権限が状況を複雑にし、他のユーザー/グループに関係なく「表現」する方法が必要な場合です。デフォルトの権限は、グループメンバーシップまたは後で実行される再帰setfaclに関係なく設定されます。これは絶対に公開しないでください。!所有者はPOSIXの世界で特別な地位を持ち、root以外の権限、ファイル権限の変更権限など、他のユーザーにはない権限を持ち、その権限はマスクに制限されません(無意味)。とにかく、システムが彼らに最初の権限を与えるからです。マスクが限られているにもかかわらず、まだrwxを取得する理由です。

しかし、特定の質問に答えるには:ファイルマスクに書き込みビットを追加し、ユーザーとして再試行してくださいjohn

ここ上記のコマンドラインバージョンです。マスクのみを変更すると、「有効」権限がどのように変更されるかをご覧ください。

答え2

それは不可能です。 cp、rsyncなどは、ファイル生成時にデフォルトのACLを無視します。

cpがACLを尊重しないのはなぜですか?

関連情報