Security

從 crontab 腳本呼叫環境變數是否安全?

  • November 16, 2020

我有一個 crontab 腳本,它讀取包含敏感資訊(如解密密鑰)的環境變數。crontab 條目的定義如下: 30 3 * * 5 VAR="pw" /usr/bin/script.sh

以這種方式儲存如此敏感的東西是否安全?如果沒有,我該如何改進它?

謝謝您的幫助。

將變數放在 crontab 文件和環境中是安全的,因為其他使用者無法訪問它。但是,它存在意外洩露的風險,例如,如果您在尋求調試幫助時發布 crontab 行,或者如果您將其複制並發送給某人作為如何自動執行腳本的範例,或者如果某些程序日誌它的環境和日誌可供不應訪問此密碼的人訪問,或者如果您備份它並且不應訪問此密碼的人可以訪問備份。我建議將機密保存在單獨的文件或目錄樹中,並在需要時閱讀它們。

如果不能修改script.sh

VAR=$(cat ~/.secret/script/password)

如果你可以修改script.sh,讓它在需要時讀取變數,而不是讓它在整個腳本中可用。

請注意,雖然環境變數不會透露給其他使用者,但命令行參數可以通過ps. 所以不要$VAR作為參數傳遞給外部命令。將其$VAR用作 shell 內置函式的參數是安全的,例如以下是安全的:

gpg --passphrase-fd=3 3< <(printf %s "$PASSPHRASE")

雖然這個具體的例子會更簡單地表示為

gpg --passphrase-file=/path/to/passphrase

引用自:https://unix.stackexchange.com/questions/619959