setfaclを使用してファイルとフォルダに異なるデフォルト権限を設定するには?

setfaclを使用してファイルとフォルダに異なるデフォルト権限を設定するには?

setが所有するフォルダがあるため、/stuffすべての新しいフォルダのグループはに設定されます。root:stuffsetgidstuff

私はこれが欲しい:

  • 新しいファイルは次のとおりですrw-rw----
    • ユーザー: 読み書き
    • グループ: 読み書き
    • その他:全く
  • 新しいフォルダは次のとおりですrwxrwx---
    • ユーザー: 読み取り、書き込み、実行
    • グループ: 読み取り、書き込み、実行
    • その他:全く

デフォルトのACLを設定すると、setfaclファイルとフォルダに対して機能するようです。私には大丈夫です。その他ファイルまたはフォルダの両方に権限がないため:

setfacl -d -m o::---- /stuff

しかし、私はどうですか?ユーザーそしてグループ?上記の操作を実行すると、すべてのファイルとフォルダに設定されます。

そして私はそれを使用できませんumask

共有ドライブがあります。人々はstuff読んで/書く/実行することができますが、他の人(他の人)はできないようにしようとします。アカウントが何であっても、ファイルにデフォルトで実行ビットが設定されていないことを確認したいと思いますumask

答え1

ファイルとディレクトリを区別できません。設定値ただ。代わりに、以下を使用して問題を解決できます。イノティファイツール新しく作成されたファイル/ディレクトリを検出し、各ファイル/ディレクトリに正しいACLを繰り返し適用します。

1-まずinotify-toolsパッケージをインストールする必要があります。

2-デフォルト/stuffディレクトリaclを復元します。

sudo setfacl -bn /stuff

3セットGID

sudo chmod g+s /stuff

4 - テストのためにバックグラウンドで次のスクリプトを実行します。永久的なソリューションのためにこれをサービスにラップします。

#!/bin/bash
sudo inotifywait -m -r -e create --format '%w%f' /stuff | while read NEW
do
    # when a new dir created
    if [ -d "$NEW" ]; then
        sudo setfacl -m u::rwx "$NEW"
        sudo setfacl -m g::rwx "$NEW"
   # when a new file created
    elif [ -f "$NEW" ]; then
        sudo setfacl -m u::rw "$NEW"
        sudo setfacl -m g::rw "$NEW"
fi
    # setting no permissions for others
    sudo setfacl -m o:--- "$NEW"
done

関連情報