Incron não executará um script, mas Cron executará, permissão negada

Incron não executará um script, mas Cron executará, permissão negada

Eu tenho um script simples para executar o rclone. Ele é executado corretamente na linha de comando root. Ele também é executado corretamente quando chamado por um cron job normal. As permissões do script são definidas como root/root 0755, ou seja, é executável. (O mesmo acontece com rclone.)

A linha a seguir é o trabalho incron conforme definido incrontab -ee confirmado comicrontab -l

/var/vhosts/localdir IN_ALL_EVENTS /bin/rclonescript.sh

A seguir está meu script que é executado na linha de comando ou em um cron job normal:

#!/bin/bash
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder

Aqui está a saída de tail -f /var/log/cron:

Mar 16 18:45:55 localhost incrond[8215]: (root) CMD (/bin/rclonescript.sh)

A saída parece correta, mas o script não é executado.

Esta é a aparência do log do cron quando o script é chamado com sucesso a partir de um cron job * * * * * /bin/rclonescript.sh:

Mar 16 18:59:01 localhost CROND[9070]: (root) CMD (/bin/rclonescript.sh)

O log é praticamente o mesmo, mas o cron job funciona. Incron não.

Tentei definir o caminho no meu script, primeiro verificando:

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

... em seguida, adicione o caminho ao script assim:

#!/bin/bash
Path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin   
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder

Quando tento isso como o trabalho de clone:

/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin bash rclonescript.sh

ou

/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin rclonescript.sh

Isso resulta em permissão negada:

Mar 17 09:00:27 localhost incrond[24917]: cannot exec process: Permission denied

Responder1

Adicione sudoantes do comando, assim:

/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo /bin/sh /bin/yourscript.sh

Selecione o usuário assim:

/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo -u username /bin/sh /bin/yourscript.sh

informação relacionada