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

한번만 실행해 보세요

관련 정보