
そのため、ファイルのグループ所有者を特定のグループに変更するコードを設定しました。
PS同じフォルダとファイル構造を持つ10人以上のユーザーがいますが、各フォルダ内の特定のファイルの所有権を変更したいと思います。
これにより、誰かがファイルを編集すると、10秒以内に(および機能を使用してcron
)sleep
グループの所有者が特定のグループに変更されます。
これは私が使用し、owner.shというファイルを作成したコードです。
chgrp www-data /home/*/private/FILE.TXT
sleep 10
chgrp www-data /home/*/private/FILE.TXT
sleep 10
chgrp www-data /home/*/private/FILE.TXT
sleep 10
chgrp www-data /home/*/private/FILE.TXT
sleep 10
chgrp www-data /home/*/private/FILE.TXT
sleep 10
chgrp www-data /home/*/private/FILE.TXT
sleep 10
うまくいきますが、攻撃しようとすると
bash owner.sh
存在しないというのに/home/*/private/FILE.TXT
手動で実行すると存在します。
chgrp www-data /home/*/private/FILE.TXT
、各ユーザーのフォルダに移動し、その特定のファイルのグループを変更します。
それでは、私が望むように動作させるにはどうすればよいですか?
答え1
努力する:
#!/bin/bash
while true; do
for user in $(ls /home); do
chgrp www-data /home/${user}/private/FILE.TXT
done
sleep 10
done
無限ループは、1分の繰り返し操作のクローン制限をバイパスすることです。実行可能にする:
chmod +x /PATH/TO/owner.sh
cronjobなしで実行してください。
あるいは、ファイルの変更に応答してそのファイルの所有権を直接変更したい場合は、inotify-toolsを使用できます。
#!/bin/bash
for user in $(ls /home); do
inotifywait -mqe close_write /home/${user}/private/FILE.TXT --format %f | while IFS= read -r file; do chgrp www-data $file; done
done
一度だけ実行してみてください