Bash chgrp GROUP /home/*/SOMEFILE/ を実行できません。どうすればいいですか?

Bash chgrp GROUP /home/*/SOMEFILE/ を実行できません。どうすればいいですか?

そのため、ファイルのグループ所有者を特定のグループに変更するコードを設定しました。

PS同じフォルダとファイル構造を持つ10人以上のユーザーがいますが、各フォルダ内の特定のファイルの所有権を変更したいと思います。

これにより、誰かがファイルを編集すると、10秒以内に(および機能を使用してcronsleepグループの所有者が特定のグループに変更されます。

これは私が使用し、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

一度だけ実行してみてください

おすすめ記事