Cron

無法讓 cronjob 執行安裝需要 root 的服務的腳本

  • June 17, 2020

我需要在 Ubuntu 18.04 上通過 cron 執行一個腳本,myscript.sh其中包含另一個腳本的安裝說明等,pluckeye-linux-0.99.40.installer我遇到了一個乏味的錯誤:

有問題的腳本是Pluckeye一種家長控制應用程序的安裝程序。這需要以 root 身份執行。裡面myscript.sh我放了

cd "/path/to/pluckeye/"
./pluckeye-linux-0.99.40.installer
  • 當我跑到sudo crontab -e那裡

* 20 * * * "/path/to/myscript.sh"

然後 Pluckeye 的安裝程序返回一個神秘的錯誤(我將 cron 執行的輸出重定向到一個文件,以便我可以看到出了什麼問題):

0b8e:24: ca151e1e WARNING 32512 0b8e:33: ca151e1e WARNING 0x30b8e019 0b8e:42: ca151e1e WARNING 0x30b8e019 0b8e:78: ca151e1e WARNING 0x30b8e019 0c2c:14: ca151e1e WARNING 0x30b8e019 0b4c:20: ca151e1e WARNING 0x30b8e019 0c70:48: ca151e1e WARNING 0x30b8e019 FAILED TO INSTALL: 6400

  • 但是當我在我的shell中正常執行安裝程序時sudo(否則它會立即返回並出錯

I need to be invoked by root

FAILED TO INSTALL: 11520

) 它可以正常工作。


我認為這是因為 cron 使用自己的最小環境。我已經嘗試了我在網際網路上找到的各種東西,比如使用而不是上面的

* 20 * * * . $HOME/.profile; "/path/to/myscript.sh"

希望讓安裝程序現在可以工作,但這並沒有改變。我不想sudo放在腳本里面,意思是

cd "/path/to/pluckeye/"
sudo ./pluckeye-linux-0.99.40.installer

正如我所讀到的那樣,這會帶來安全風險。

我需要做什麼才能讓 Pluckeye 通過 cron 自行安裝?

也許你會這樣做:

  1. 使用 crontab -e
* 20 * * * sh /path/to/myscript.sh
  1. 使用 /etc/crontab
* 20 * * * root cd /path/to/pluckeye/ && sh ./pluckeye-linux-0.99.40.installer

引用自:https://serverfault.com/questions/1019442