在我看来,如果我在$HOME/path/to/script/myscript
编写shell脚本,并export PATH=$PATH:$HOME/path/to/script/
那么sudo -E myscript
应该运行脚本吧?
从sudo手册页:
-E -E(保留环境)选项向安全策略表明用户希望保留其现有的环境variables。 如果指定-E选项并且用户没有保留环境的权限,则安全策略可能会返回错误。
但是sudo -E script
找不到命令。 我知道我可以添加/absolute/path/to/script/
到确定PATH
variables为sudo env
,但这不是我想要的方法。
解决意见:
// @ H2CO3 :我看到sudo sudo
在网上漂浮,它让我感到非常惊讶,它实际上是在说“给我超级用户权限来运行超级用户”。 我不知道这是否会解决问题,但似乎是一个根本上有缺陷的方法。 然后,我再次开始在90年代中期使用linux / bsd系统,所以我只考虑sudo
命令本身。
@rici :这个脚本具有可执行权限,但是当* nix系统不运行时,这肯定是要检查的东西)
/ etc / sudoers默认情况下有一个设置来重置环境。 并且还定义了一个默认的secure_path,当你运行sudo -E [cmd]的时候它是有效的。
您将需要编辑/ etc / sudoers文件并添加“env_keep”并提及要保留的变量。
默认env_keep + =“PATH”
但在此之前注释掉secure_path行。 然后通过sudo -E尝试你的命令。