Tengo un script inotifywait que monitorea un directorio de carga ftp y cada vez que se carga un archivo nuevo establece los permisos correctos.
Hago esto porque el cliente remoto fuerza modos de archivo incorrectos y evitar que el servidor ftp acepte comandos chmod hace que el cliente remoto escupe errores falsos.
Entonces mi último recurso es un script inotify pero eso causa otro problema más, aquí está:
#!/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
Así que supongo que lo que sale mal aquí es que una vez que el cliente carga y modifica el archivo, la opción ATTRIB se activa (como se supone que debe hacerlo), pero el chmod resultante en mi propio script hace que la opción ATTRIB se active nuevamente... provocando un bucle recursivo.
¿Hay alguna manera de dejar claro a inotifywait que debe ignorar sus propias acciones para evitar este bucle?
Respuesta1
En lugar de inotifywait
esperar -e attrib
, deberías estar esperando -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.