web-dev-qa-db-ja.com

linux / setfacl-親ディレクトリ内の現在/将来のファイル/ディレクトリをすべて、所有者/グループを指定して775に設定する

「メンバー」と呼ばれるディレクトリがあり、その下にフォルダ/ファイルがあります。すべての現在のフォルダー/ファイルとそこに作成される将来のフォルダー/ファイルをデフォルトで再帰的に設定するにはどうすればよいですか? ACLを有効にしてマウントしましたが、setfaclコマンドでこれを正しく実行できないようです。これを達成する方法はありますか?

43
Maverick

私は実際にこれまでに私が求めていることを実行する何かを見つけました、ここで共有して、この問題に遭遇した人は誰でもこの解決策を試すことができます:

Sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
Sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

R 再帰的です。つまり、そのディレクトリの下のすべてにルールが適用されます。
d これはデフォルトです。つまり、そのディレクトリの下に作成される今後のすべてのアイテムには、これらのルールがデフォルトで適用されます。 メートル ルールを追加/変更するには必要です。

最初のコマンドは新しいアイテム(つまり、d)に対するもので、2番目のコマンドはフォルダーの下の古い/既存のアイテムに対するものです。これは少し複雑であまり直感的ではないので、これが誰かを助けることを願っています。

63
Maverick

受け入れられた答えで行くには...

これらのコマンドを次のように組み合わせることができます。

Sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/
18
Joshua

linuxのsetfaclには-dおよび-kデフォルトのパーミッションを操作するためのオプションであり、これはおそらく探しているものです(詳細についてはmanを参照してください)。

2
peterph

適切に許可されたユーザーの要求に応じて、単純なUNIXアクセス許可、ディレクトリおよびファイルのアクセス許可を再帰的に設定するのは簡単です。これを自動的に課すことはできません。

0002のumaskセットを使用するようにユーザーに指示することができ、これは0775で新しいアプリケーションを作成するのに役立ちます(アプリケーションによって異なります)。しかし、それは強制的ではありません。

私の理解では、ACLはUNIX/Linuxシステムでは継承されません。それらは要求に応じて設定されます。

ファイル/ディレクトリの所有権に関しては、あなたはここではほとんど運が悪いです。

ファイル/ディレクトリグループの所有権については、ディレクトリのset-gidビット(つまり、DIRECTORIESのg + s)を設定すると、グループの所有権が継承されます。

私がそのような状況で行ったことは、定期的なルートcronスクリプトを実行して、非準拠の権限/所有権をそのようなディレクトリの標準にリセットすることです。

別の(非推奨)プロセスは、これらのファイルで作業するときに同じユーザーIDを使用することです。これは、ユーザーが自分のUIDでシステムにログインし、Sudoまたはsuを使用してIDとして実行することで実現できます。これは、特にACLと許可ビットに関しては、まだ100%ではありません。

1
mdpc