首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于"sudo go run main.go“

关于"sudo go run main.go“
EN

Stack Overflow用户
提问于 2016-11-02 07:24:57
回答 2查看 10.9K关注 0票数 1

我在我的Ubuntu16.04中使用Go,并设置GOPATHGOROOT并成功运行简单代码。

现在我想通过"gopacket“捕获网络数据包,但它需要sudo /root权限。我执行命令:sudo go run main.go,它回波错误:

"exec: go:$PATH中找不到的可执行文件“

我搜索了它,然后编辑文件/etc/sudoders并将行"Defaults env_reset"更改为"Defaults !env_reset",但是它不起作用.

你能帮帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2016-11-02 08:03:32

您的环境变量没有为根用户设置。不要尝试运行sudo go run ...,而是在没有sudo的情况下构建二进制文件,例如go buildgo install,然后使用sudo执行二进制文件。

假设你在main.go的文件夹中,假设它叫做mycapt

代码语言:javascript
运行
复制
go build
sudo ./mycapt

或者:

代码语言:javascript
运行
复制
go install
sudo $GOPATH/bin/mycapt
票数 12
EN

Stack Overflow用户

发布于 2016-11-05 12:37:31

sudo -E go run main.go可能会为你工作。

以下是从-E选项中可以从man sudo获得的信息

代码语言:javascript
运行
复制
-E, --preserve-env
   Indicates to the security policy that the user wishes to preserve
   their existing environment variables. The security policy may return
   an error if the user does not have permission to preserve the environment.
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40374434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档