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

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

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

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

谢谢您的帮助。

答案1

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

如果无法修改script.sh

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

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

请注意,虽然环境变量不会向其他用户公开,但其他用户可以通过ps.因此,不要将其$VAR作为参数传递给外部命令。用作 shell 内置函数的参数是安全的$VAR,例如以下内容是安全的:

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

尽管这个具体示例可以更简单地表示为

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

相关内容