为什么不sudo -E实际上保护我的环境?

Modified on: Mon, 01 Jul 2019 19:00:03 +0800

我正在尝试sudo一些自定义路径中的二进制文件。我运行sudo时会删除该自定义路径,但sudo -E应保留我的路径。为什么不起作用?

$ env | egrep ^PATH
PATH=/home/codemonkey/.nvm/v0.6.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/gam
es:/usr/games

$ sudo env | egrep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

$ sudo -E env | egrep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

我知道如何解决它,我只是想知道为什么sudo -E不起作用

作者:Hubro

最佳答案

您可以设置exempt_group选项,告诉sudo为该组中的用户保留PATH

例如,假设您的用户位于“sys”组中。将以下内容添加到您的sudoers文件

Defaults exempt_group="sys"

现在你的用户不会为sudo命令重置PATH(这不需要-E)。
有关详细信息,请参见手册页

编辑:必须注意这是一个糟糕的答案。它确实有效,但它有一个副作用我在玩它时没有注意到。它还使该组中的用户免于必须键入其密码。似乎你不能在不允许的情况下获得PATH保存。我认为有点愚蠢...

作者:,Patrick

相关问答

添加新评论