6

在我看来,如果我在 中编写一个 shell 脚本$HOME/path/to/script/myscriptexport PATH=$PATH:$HOME/path/to/script/那么sudo -E myscript应该运行该脚本吧?

从 sudo 手册页:

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

但是sudo -E script找不到命令。我知道我可以添加/absolute/path/to/script/到确定PATH变量的文件中sudo env,但这不是我想要采取的方法。

解决评论:
@H2CO3:我看到sudo sudo网上漂浮,它让我非常烦恼,它的字面意思是“给我超级用户权限来运行超级用户”。我不知道它是否能解决问题,但这似乎是一种根本存在缺陷的方法。然后我又在 90 年代中期开始使用 linux/bsd 系统,所以我只对sudo命令本身提出异议。
@rici:该脚本确实具有可执行权限,但这绝对是在 *nix 系统中无法运行时检查的内容 =)

4

1 回答 1

10

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

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

默认 env_keep += "PATH"

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

于 2013-09-11T18:54:58.360 回答