web-dev-qa-db-ja.com

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

Setfaclを使用して、「app」グループの誰もが、従来のUNIXのアクセス権の内容に関係なく、/ usr/local/users/appに含まれるファイルを編集できるようにしたいと思います。ジョンとベンという2人のユーザーがいます。 別の質問からの指示 を実行しようとしましたが、johnは一部のファイルに書き込むことができません。これはaclマスクが原因です。しかし、私はrwxのディレクトリにデフォルトのマスクを設定しているので、その中のファイルは作成時にそれを継承しないのですか?

例えば。ジョンは以下のファイルに書き込むことはできませんが、彼はファイルに書き込みACLを持っているグループ「アプリ」のメンバーなので、ファイルを編集できないことに驚いています。

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--
12
Ben McCann

Getfaclが投げかけている「効果的な」コメントに気付くでしょう。問題は、「アプリ」が書き込みビットセットを取得しないように権限が計算されていることです。これは、ファイルのマスクが読み取り専用に設定されているために発生しています。マスクは、特定のファイルまたはディレクトリに対して与えられる可能性のある権限の量を制限するために使用されます。

この動作が必要な理由の例は、ファイルにアクセスするためにさまざまなユーザー/グループが正当に必要であることがわかっていたが、何らかの理由で権限が複雑になり、「その他デフォルトの権限は、グループメンバーシップが何であれ、または後で再帰的なsetfaclが実行されるときに設定されますDEFINITELY DO N'T GIVE THIS OUT! "所有しているユーザーはPOSIXの世界で特別なステータスを持っています。非rootになり、ファイルのアクセス許可を変更するなど、他のユーザーにはない権限があり、その権限はマスクによって制限されません(これはとにかくシステムが与える最初の特権のために無意味です)。これが、マスクが制限されているにもかかわらず、rwxを取得する理由です。

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

ここ は上記の説明のコマンドラインバージョンです。変更するのがすべてマスクの場合に「有効な」権限がどのように変化するかに注意してください。

7
Bratchley

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

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

0
Ben McCann