如何以编程方式在 sudoers 文件中添加 secure_path

bel*_*ial 13 linux grep

我正在尝试为从 github 构建节点和 npm 的 EC2 实例构建用户数据脚本,然后启动服务。要润滑这些轮子,我需要添加:

:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

到 /etc/sudoers 中开始的行的末尾:

Defaults        secure_path="
Run Code Online (Sandbox Code Playgroud)

https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands谈到使用 visudo 来实现这一点,但我想在 EC2 用户数据中以编程方式进行。

/sf/ask/1139795261/谈到了编辑 sudoers 文件,但对于我正在尝试的内容来说似乎太过分了达到。

我认为 grep 行并替换它很容易,但我很难过。不仅因为那个烦人的结束引号!

Ger*_*der 10

如果您可以接受替换secure_path值而不是附加值,则可以使用更简单的解决方案。通常 sudo 有一个 config 目录/etc/sudoers.d,您可以在其中放置其他配置文件。

只需在那里创建一个具有完整secure_path价值的文件:

Defaults secure_path="<default value>:/usr/local/bin"
Run Code Online (Sandbox Code Playgroud)

这会覆盖主配置中的值。如果所有机器的路径值都相同,则可以使用脚本或包轻松部署。

这还有一个额外的好处,即您不必在将来更新 sudo 包时检查并可能合并配置文件。