Cron
將letsencrypt的certbot作為cron作業執行時的不同行為
我按照本指南在 Ubuntu 14.03 上安裝了letsencrypt:
我還按照指南中的描述創建了一個用於證書更新的 cron 作業,但後來發現了以下問題:
certbot-auto renew
(作為非 root 使用者)並且sudo certbot-auto renew
在從命令行測試時都可以工作(certbot 報告證書尚未到期續訂,正如預期的那樣)- 但是,當 cron(以 root 身份)執行相同的命令時,certbot 會嘗試自行升級。
知道為什麼我會得到這種不同的行為嗎?在 shell 控制台上手動執行命令和讓它由 cron 執行有什麼區別?
**更新:**我添加了
--no-self-upgrade
,但沒有任何區別。在進一步調查中,我注意到以下內容:
sudo certbot-auto renew --dry-run
工作正常sudo su; certbot-auto renew --dry-run
嘗試先升級 certbot出於某種原因,certbot 在以第二種形式執行時似乎認為它沒有正確安裝。
出現此問題的原因
certbot
是安裝方式。當不
certbot
使用$HOME
. 執行時sudo
,這仍然是你自己的$HOME
。但是,當以 root 身份執行時,這會轉到/root
不存在虛擬環境的位置,因此certbot
如果不創建它就無法執行。考慮到執行它的新環境,它與其說是自我升級不如說是自我安裝。