sudo E选项不起作用?

时间:2013-09-11 17:52:51

标签: linux bash ubuntu root

我觉得如果我在$HOME/path/to/script/myscript编写一个shell脚本,export PATH=$PATH:$HOME/path/to/script/那么sudo -E myscript应该运行该脚本吗?

From sudo man page:

  

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

sudo -E script无法找到该命令。我知道我可以将/absolute/path/to/script/添加到确定PATH的{​​{1}}变量的文件中,但这不是我想采用的方法。

发表评论: @ H2CO3 :我看到sudo env漂浮在网络上,它让我非常烦恼,它实际上是在说“给我超级用户权限来运行超级用户”。我不知道它是否能解决问题,但它似乎是一个根本上有缺陷的方法。然后我又开始在90年代中期使用linux / bsd系统,所以我只考虑了sudo sudo命令本身。
@rici :该脚本确实具有可执行权限,但只要在* nix系统中没有运行某些内容,就可以检查该内容=)

1 个答案:

答案 0 :(得分:8)

默认情况下,

/ etc / sudoers具有重置环境的设置。并且还定义了一个默认的secure_path,它在运行sudo -E [cmd]时生效。

您需要编辑/ etc / sudoers文件并添加'env_keep'并提及您要保留的变量。

默认env_keep + =“PATH”

但在此之前注释掉secure_path行。然后通过sudo -E尝试你的命令。

相关问题