sudo 中的 Linux 环境变量

sudo 中的 Linux 环境变量

我有一个正在运行的 AWS ec2 实例,并在其上托管了一个基于 DJango 的 Web 应用程序。但问题是我无法在sudo模式下访问环境变量。因此,当我的 DJango 应用程序的设置文件尝试访问数据库凭据的环境变量时,它无法这样做,尽管我可以不使用 访问环境变量sudo。请指导我如何全局设置环境变量,以便即使在使用命令时也可以访问它sudo

答案1

您可以使用 sudo 的 -E 命令来保留环境变量

-E' -E(保留环境)选项向安全策略表明用户希望保留其现有的环境变量。如果指定了 -E 选项并且用户没有保留环境的权限,则安全策略可能会返回错误。

但是,如果 sudo 意味着您正在 root 下运行 Django,我建议您重新考虑,因为这会带来重大的安全风险。如果由于某种原因您的应用程序受到攻击,那么攻击者就有可能在运行 Django 的用户上运行命令。如果该用户是 root,则攻击者可以完全控制系统。最佳做法是为您的应用程序设置一个专用用户。

如果您确实为应用程序使用了专用用户,我建议将环境变量放在应用程序用户可以访问的文件中。但我也不建议将纯文本密码放在其中。将它们存储在加密的地方。

来源:

https://unix.stackexchange.com/a/20238

https://linux.die.net/man/8/sudo

相关内容