![防止在 sudo 中记录环境变量](https://linux22.com/image/741609/%E9%98%B2%E6%AD%A2%E5%9C%A8%20sudo%20%E4%B8%AD%E8%AE%B0%E5%BD%95%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F.png)
我正在尝试通过环境变量向脚本提供一个秘密值,但没有将其记录sudo
下来auth.log
。
目前我有这个文件:
/etc/secret-key
export SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR
该文件归 root:root (0400) 所有。
使用cron
和sudo
,我可以在用户下运行脚本www-data
,并提供该值。
5 * * * * root . /etc/secret-key; sudo -u www-data --preserve-env=SECRET_CONFIG_KEY /path/to/script
但该auth.log
文件包含如下行:
Aug 19 18:30:01 server sudo: root : TTY=unknown ; PWD=/root ; USER=www-data ; ENV=SECRET_CONFIG_KEY=K1PX7MZ8an8H2mRQR ; COMMAND=/path/to/script
小组中的任何人都可以读取它adm
,并且每天通过 LogWatch 通过电子邮件发送给我。
我很乐意考虑其他方法。
主要功能是使用帐户将此秘密值提供给脚本,www-data
其中该帐户仅在需要时才被授予对该值的访问权限(该帐户不应对密钥文件具有读取权限)。
附带说明一下,该www-data
帐户不能编辑其任何脚本,该帐户仅用于运行它们。
答案1
您可能应该使用su
而不是sudo
这样做。
考虑一下类似的事情:
su www-data -w SECRET_CONFIG_KEY -c /path/to/script