我在我的Ubuntu16.04中使用Go,并设置GOPATH、GOROOT并成功运行简单代码。
现在我想通过"gopacket“捕获网络数据包,但它需要sudo /root权限。我执行命令:sudo go run main.go,它回波错误:
"exec: go:$PATH中找不到的可执行文件“
我搜索了它,然后编辑文件/etc/sudoders并将行"Defaults env_reset"更改为"Defaults !env_reset",但是它不起作用.
你能帮帮我吗?
发布于 2016-11-02 08:03:32
您的环境变量没有为根用户设置。不要尝试运行sudo go run ...,而是在没有sudo的情况下构建二进制文件,例如go build或go install,然后使用sudo执行二进制文件。
假设你在main.go的文件夹中,假设它叫做mycapt
go build
sudo ./mycapt或者:
go install
sudo $GOPATH/bin/mycapt发布于 2016-11-05 12:37:31
sudo -E go run main.go可能会为你工作。
以下是从-E选项中可以从man sudo获得的信息
-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.https://stackoverflow.com/questions/40374434
复制相似问题