FTP 업로드 디렉터리를 모니터링하고 새 파일이 업로드될 때마다 올바른 권한을 설정하는 inotifywait 스크립트가 있습니다.
원격 클라이언트가 잘못된 파일 모드를 강제하고 ftp 서버가 chmod 명령을 허용하지 못하게 하면 원격 클라이언트가 가짜 오류를 뱉어내기 때문에 이렇게 합니다.
그래서 내 최후의 수단은 inotify 스크립트이지만 이는 또 다른 문제를 야기합니다.
#!/bin/bash
inotifywait -mrq -e ATTRIB --format "%w%f" /home/user/upload/ | while read FILE; do
if [[ -f "$FILE" ]];then
chown user:apache "$FILE" && chmod 640 "$FILE"
fi
done
그래서 여기서 잘못된 점은 일단 파일이 클라이언트에 의해 업로드되고 chmodded되면 ATTRIB 옵션이 트리거되지만(예상대로) 내 스크립트의 결과 chmod로 인해 ATTRIB 옵션이 다시 트리거된다는 것입니다... 재귀 루프를 발생시킵니다.
이 루프를 방지하는 자체 작업을 무시해야 함을 inotifywait가 명확히 할 수 있는 방법이 있습니까?
답변1
inotifywait
을 기다리는 대신 -e attrib
을 기다려야 합니다 -e modify
.
modify A watched file or a file within a watched directory was written to. attrib The metadata of a watched file or a file within a watched directory was modified. This includes timestamps, file permissions, extended attributes etc.