了解正确的 sudo 用法以使用本地用户 $GOPATH

了解正确的 sudo 用法以使用本地用户 $GOPATH

为了理解我的问题,这是我当前的设置:

我正在与用户合作“”,该用户有一个$GOPATHas /foo/go/

该用户位于 sudo'ers 组中。

我正在尝试在 go 项目的 git 目录中工作。如果我使用 sudo 我可以编辑该文件,问题是如果我尝试从 vim 构建我的项目,或者从我的 gopath 运行任何内容(例如:GoMetaLinter),那么它会在 root 用户的上下文中运行,因为我使用了 sudo,但该用户没有设置 gopath。

我真的不明白如何正确解决这个问题。我已经恢复以只读方式打开文件以使用我的 linter,然后使用 vim 进行 sudo 和写入,但这很愚蠢,而且我知道这不是“正确的”。使用 sudo 以便使用本地用户上下文/变量而不是根的正确方法是什么?

答案1

sudo出于安全考虑,不会保留环境变量。要覆盖它,添加类似的内容

Defaults env_keep += "HOME GOPATH"

应该/etc/sudoers会有所帮助,列出您希望保留的环境变量。

https://stackoverflow.com/questions/8633461/how-to-keep-environment-variables-when-using-sudo#8633575可能包含额外的提示。

相关内容