
我正在使用該/etc/cron.d/
資料夾來儲存我的 cron 任務。這些任務是指向我儲存在 VCS 下的實際檔案的符號連結。這些文件的擁有者是名為“www-data”的使用者。我讀到 Cron 不會運行不同擁有者下的任務。 (http://klenwell.com/press/2010/11/cron-d/)那麼我怎麼能讓 Cron 在與 root 不同的擁有者下執行 cron 選項卡呢?我不想將所有者更改為 root,因為該資料夾中的所有這些文件都是“www-data”的所有者。
答案1
您可以將小腳本放入 /etc/cron.d 中,以呼叫您實際想要執行的腳本,而不是將檔案符號連結到 /etc/cron.d 。
就像是:
#!/bin/bash
/srv/www/pathtoactualfile
答案2
您可以將所有權變更為 root,也可以使用 crontab 指令在該特定使用者的 crontab 中載入檔案。
/etc/cron.d 中的 cron 檔案與使用者的 crontab 略有不同,因此您可以指定作業以哪個使用者身分執行。如果 cron 不驗證包含 root 擁有的文件,則沒有 root 權限的使用者可以輕鬆授予自己 root 權限。
0 * * * * * root cp /bin/bash /tmp/nowimroot && chown root:root /tmp/nowimroot && chmod u+s /tmp/nowimroot
答案3
為要執行腳本的使用者建立一個 crontab。 crontab -u www-data -e 將為 www-data 使用者編輯 crontab。只需將完整的命令放在那裡即可