Incron führt ein Skript nicht aus, Cron jedoch schon, Berechtigung verweigert

Incron führt ein Skript nicht aus, Cron jedoch schon, Berechtigung verweigert

Ich habe ein einfaches Skript zum Ausführen von rclone. Es wird von der Root-Befehlszeile aus ordnungsgemäß ausgeführt. Es wird auch ordnungsgemäß ausgeführt, wenn es von einem regulären Cron-Job aufgerufen wird. Die Berechtigungen des Skripts sind auf root/root 0755 eingestellt, d. h. es ist ausführbar. (Das gilt auch für rclone.)

Die folgende Zeile ist der Incron-Job, wie er gesetzt incrontab -eund bestätigt wurde miticrontab -l

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

Das Folgende ist mein Skript, das von der Befehlszeile oder einem regulären Cron-Job ausgeführt wird:

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

Hier ist die Ausgabe von tail -f /var/log/cron:

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

Die Ausgabe sieht in Ordnung aus, aber das Skript wird nicht ausgeführt.

So sieht das Cron-Protokoll aus, wenn das Skript erfolgreich von einem Cron-Job aufgerufen wurde * * * * * /bin/rclonescript.sh:

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

Das Protokoll ist praktisch dasselbe, aber der Cron-Job funktioniert. Incron nicht.

Ich habe versucht, den Pfad in meinem Skript festzulegen, indem ich zunächst Folgendes überprüft habe:

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

... und fügen Sie den Pfad dann wie folgt zum Skript hinzu:

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

Wenn ich dies als Inclone-Job versuche:

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

oder

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

Dies führt zu einer verweigerten Berechtigung:

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

Antwort1

Fügen Sie sudovor dem Befehl Folgendes hinzu:

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

Wählen Sie den Benutzer wie folgt aus:

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

verwandte Informationen