フォルダに書き込むときにファイルの権限を自動的に変更します。

フォルダに書き込むときにファイルの権限を自動的に変更します。

ディレクトリをどのように作成できますか?

/data
/data/user1
/data/user2

rootそして、記録するたびに、記録されたディレクトリに応じて他の所有者が設定されていることを確認してください。

例:

  1. rootは/ dataに書き込む - >一般ファイルを生成する
  2. ルートは /data/user1 に書き込みます。 ->ここで生成されたすべてのファイルは自動的にuser1が所有し、他の人が読み取ることができます(user1がディレクトリ自体に書き込む場合にも同じことが当てはまります)。

答え1

ディレクトリの SGID ビットを使用して、必要なものに近づけることができます。走れば

chmod g+s /data/user1

そのディレクトリに作成されたファイルまたはディレクトリのグループ所有権は、ディレクトリ自体と同じグループに設定されます。あなたが望むことを正確に行うわけではありませんが、目標に到達するのに役立ちます。

別のアプローチは、POSIX aclを使用し、ディレクトリにデフォルトのaclを設定することです。デフォルトのaclは、ディレクトリに生成されたファイルに継承されます。所有権は変更されませんが、標準ファイル ACL の 3 つの基本グループ外のすべてのグループに対する読み取り、書き込み、または実行アクセスを提供する方法を提供します。

答え2

以下のスクリプトは非常に危険である可能性があり、 で生成された新しいファイルのみを監視し、生成された${DIR}すべてのファイルの所有者は に変更され、グローバル${OWNER}読み取り権限が追加されます。

自分の責任で使用してください...

#!/bin/bash

DIR="$PWD/user1"
OWNER="user1"

inotifywait -m --format "%e %f" "$DIR" | awk '$1 ~ "CREATE" { print $2; fflush() }' | 
while read file
do
    FILE="${DIR}"/"${file}"
    echo "Changin permission for ${FILE}"
    chown user1 "${FILE}"
    chmod o+r "${FILE}"
done

fsドライバを作成してマウントすると、より安全です。

答え3

bindfsたぶんそれはあなたに役立つかもしれません。

cd /data
chown user1:user1 user1
bindfs --create-for-user=user1 --create-for-group=user1 --create-with-perms=go+rD user1 user1

bindfschown / chmod戦略などの詳細については、残りのマニュアルページを参照してください。

答え4

あなたはできません。

この仕事は次のとおりです。

  1. クローナとクローナ
  2. inotifyといくつかのスクリプトが必要です。

個人的に私はinotifyを選択します。上記のスクリプトは良い出発点です。

関連情報