О "sudo go run main.go"
Я использую Go в своей Ubuntu 16.04, и я установил GOPATH
, GOROOT
и запустить простой код успешно.
Теперь я хочу захватить сетевой пакет с помощью "gopacket", но для этого требуется разрешение sudo /root. Я извиняюсь за команду: sudo go run main.go
Эхо ошибка:
"exec: go: исполняемый файл не найден в $PATH"
Я погуглил это, и я редактирую файл /etc/sudoders
и изменить строку "Defaults env_reset"
в "Defaults !env_reset"
, но это не работает...
Вы можете мне помочь?
2 ответа
Переменные среды не установлены для вашего пользователя root. Не пытайся бежать sudo go run ...
вместо этого создайте бинарный файл без sudo, например go build
или же go install
и затем выполнить двоичный файл с sudo
,
Допустим, вы в папке main.go
Предполагается, что это называется mycapt
:
go build
sudo ./mycapt
Или же:
go install
sudo $GOPATH/bin/mycapt
sudo -E go run main.go
может работать на вас.
Вот то, что вы можете получить о -E
вариант из man sudo
-E, --preserve-env
Indicates to the security policy that the user wishes to pre‐
serve their existing environment variables. The security
policy may return an error if the user does not have permis‐
sion to preserve the environment.