
フォルダーの内容を保護する方法 (ACL を使用) はありますか? ユーザーはフォルダー内にファイルを作成する必要がありますが、上書き/編集/削除することはできません。これは可能ですか?
答え1
ディレクトリを監視し、ディレクトリにコピーされた各新しいファイルの所有権を変更するなどの変更を行うために使用できますinotifywait
。Debian ベースのディストリビューションでは、次のようにソフトウェアをインストールしますapt-get install inotify-tools
。
次のようなスクリプトを作成します/usr/local/sbin/inbox.sh
。
#!/usr/bin/env bash
inotifywait -m -e create "/path/to/directory" |
while read path event file; do
if [ "$event" = "CREATE" ]; then
chown root:root "$path$file"
fi
done
スクリプトに実行権限 ( chmod 0700 /usr/local/sbin/inbox.sh
) を与えます。次に、起動時に、/etc/rc.local
または適切な RC ファイルからスクリプトを実行します/usr/local/sbin/inbox.sh &
。
によるマニュアルは、-m
無期限に監視し、-e
特定のイベントを監視します。ループ内では、ディレクトリの作成を示すwhile
などのイベントを受け取る可能性があります。ディレクトリは質問の対象ではないため、ステートメントには、イベント で表される新しいファイルにのみ応答するコマンドが含まれています。変数 from には末尾にスラッシュ文字が付いているため、 とは、2 つの間にスラッシュを指定せずに連結できます。CREATE,ISDIR
if
CREATE
path
inotifywait
$path
$file