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

Hub*_*bro 5 linux debian sudo environment-variables env

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

$ 环境 | egrep ^路径
PATH=/home/codemonkey/.nvm/v0.6.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/gam
es:/usr/游戏

$ sudo 环境 | egrep ^路径
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

$ sudo -E 环境 | egrep ^路径
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

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

phe*_*mer 4

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

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

Defaults exempt_group="sys"
Run Code Online (Sandbox Code Playgroud)

现在,您的用户将不会PATH重置 sudo 命令(-E不需要此操作)。有关更多详细信息,
请参阅手册页。

编辑:必须指出这是一个糟糕的答案。它确实有效,但它有一个我在使用它时没有注意到的副作用。它还使该组中的用户无需输入密码。似乎如果不允许这样做,您就无法保留 PATH 。我觉得有点傻...