从 crontab 脚本调用环境变量是否安全?

ice*_*bit 3 security cron environment-variables

我有一个 crontab 脚本,它读取带有敏感信息(如解密密钥)的环境变量。crontab 条目定义如下: 30 3 * * 5 VAR="pw" /usr/bin/script.sh

以这种方式储存如此敏感的东西是否安全?如果没有,我该如何改进?

谢谢您的帮助。

Gil*_*il' 5

将变量放在 crontab 文件和环境中是安全的,因为其他用户无法访问它。但是,它存在意外泄露的风险,例如,如果您在寻求调试帮助时发布 crontab 行,或者如果您复制它并将其发送给某人作为如何自动运行脚本的示例,或者如果某些进程日志它的环境和日志可供不应访问此密码的人访问,或者如果您对其进行备份并且备份可供不应访问此密码的人访问。我建议将机密保存在单独的文件或目录树中,并在需要时阅读它们。

如果你不能修改script.sh

VAR=$(cat ~/.secret/script/password)
Run Code Online (Sandbox Code Playgroud)

如果可以修改 script.sh,请让它在需要时读取变量,而不是使其在整个脚本中都可用。

请注意,虽然环境变量不会透露给其他用户,但其他用户可以通过ps. 所以不要$VAR作为参数传递给外部命令。它是安全的使用$VAR作为参数传递给一个shell内建,例如以下是安全的:

gpg --passphrase-fd=3 3< <(printf %s "$PASSPHRASE")
Run Code Online (Sandbox Code Playgroud)

虽然这个特定的例子会更简单地表达为

gpg --passphrase-file=/path/to/passphrase
Run Code Online (Sandbox Code Playgroud)