Incron은 스크립트를 실행하지 않지만 Cron은 실행하지만 권한이 거부됩니다.

Incron은 스크립트를 실행하지 않지만 Cron은 실행하지만 권한이 거부됩니다.

rclone을 실행하는 간단한 스크립트가 있습니다. 루트 명령줄에서 제대로 실행됩니다. 또한 일반 크론 작업에 의해 호출될 때 제대로 실행됩니다. 스크립트의 권한은 루트/루트 0755로 설정됩니다. 즉, 실행 가능합니다. (rclone도 마찬가지입니다.)

다음 줄은 에서 설정 incrontab -e하고 확인한 incron 작업입니다.icrontab -l

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

다음은 명령줄이나 일반 크론 작업에서 실행되는 스크립트입니다.

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

다음의 출력은 다음과 같습니다 tail -f /var/log/cron.

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

출력은 괜찮아 보이지만 스크립트가 실행되지 않습니다.

cron 작업에서 스크립트가 성공적으로 호출되면 cron 로그가 다음과 같이 표시됩니다 * * * * * /bin/rclonescript.sh.

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

로그는 거의 동일하지만 cron 작업이 작동합니다. 인크론은 그렇지 않습니다.

먼저 다음을 확인하여 스크립트에서 경로를 설정해 보았습니다.

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

...다음과 같이 스크립트에 경로를 추가합니다.

#!/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

이것을 인클론 작업으로 시도하면 다음과 같습니다.

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

또는

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

결과적으로 권한이 거부되었습니다.

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

답변1

sudo다음과 같이 명령 앞에 추가합니다 .

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

다음과 같이 사용자를 선택합니다.

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

관련 정보